Avoid exception handling for verifying algorithm validity #212
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Currently, when a
Symbol
is passed to theOpt
constructor or thealgorithm_name
function, the correspondingAlgorithm
object is obtained via aDict
lookup inside of atry
/catch
, where thecatch
permits throwing a more informative error. The use of exception handling here isn't necessary though; rather than usinggetindex
and catching any resulting exception, we can instead useget
with a default value that does not correspond to a valid algorithm and check for equality with that. (Alternatively we could guard thegetindex
with ahaskey
but that requires performing the lookup twice.) This change to usingget
is implemented here.To avoid duplicating the code that checks a
Symbol
for validity as an algorithm across multiple functions, I've defined a constructor methodAlgorithm(::Symbol)
that includes this check. This also provides a pleasant simplification of the methods required, sinceSymbol
andInteger
inputs can now go through the sameOpt
andalgorithm_name
methods.