You rely on human validation of your code's return type values via unchecked exceptions, and don't understand why your code is resultantly ambiguously defined.
If you're ignorant to the degree that you don't understand how exceptions are part of the function's return type, it has nothing to do with my imagination.