Меня смущает то, как Scala обрабатывает деление на ноль. Вот фрагмент кода REPL.
scala> 1/0
java.lang.ArithmeticException: / by zero
... 33 elided
scala> 1.toDouble/0.toDouble
res1: Double = Infinity
scala> 0.0/0.0
res2: Double = NaN
scala> 0/0
java.lang.ArithmeticException: / by zero
... 33 elided
scala> 1.toInt/0.toInt
java.lang.ArithmeticException: / by zero
... 33 elided
Как вы можете видеть в приведенном выше примере, в зависимости от того, как вы делите на ноль, вы получаете одно из следующих:
- "java.lang.ArithmeticException:/нулем"
- "Двойной = NaN"
- «Двойной = бесконечность»
Это делает отладку довольно сложной, особенно при работе с данными с неизвестными характеристиками. В чем причина этого подхода или, что еще лучше, вопрос, как унифицированно обрабатывать деление на ноль в Scala?