Shouldn't there be an `else` here? If the compiler doesn't warn about `throw` after `return`, that's probably a compiler bug.