One possibility might be to swap ZeroDivisionError for its parent ArithmeticError, which would then let FloatingPointError and OverflowError through as well.  I'm not sure there are any reasonable cases where the specific choice of 700nm as the test wavelength would make an otherwise valid input string fail beyond these.  On the other hand, we're pretty far into corner-case territory now, so it probably isn't crucial that we trap *every* potential type of malformed input error here either.