我认为以下代码应该崩溃,因为我正在执行被零除的整数:
int n = 42;
eatCake(n / 0);
为什么除以零不会使我的应用程序崩溃?
答案 0 :(得分:4)
此处的关键是n / 0
不是整数除。
Dart自动执行double
除法,而double
类型具有double.infinity
constant。这意味着print(n / 0)
将产生Infinity
。
此外,double.infinity
实际上定义为1.0 / 0.0
。
如果您改用整数除法,则会收到IntegerDivisionByZeroException
:
print(n ~/ 0); // <- IntegerDivisionByZeroException