我有以下代码:
public static void main(String[] args) {
try {
int d1 = 3;
int d2 = 0;
int d = d1/d2;
} catch (Exception ex) {
System.out.println("Exception");
}
}
运行此代码时,很明显会发生异常。 但是,如果我按如下方式更改代码:
public static void main(String[] args) {
try {
double d1 = 3;
double d2 = 0;
double d = d1/d2;
} catch (Exception ex) {
System.out.println("Exception");
}
}
然后异常不抛出。我真的不明白。 有人可以详细说明吗?
答案 0 :(得分:8)
因为将double除以0.0将产生NAN或+/-无穷大,而不是例外。
答案 1 :(得分:2)
当您执行整数除法0时,您可以获得异常,因为没有为此定义的行为。
IEEE标准中存在双重划分的定义行为。
答案 2 :(得分:2)
在第二个示例中,不会发生异常,因为double数据类型具有正无穷大和负无穷大的特殊值。
将3d除以0将导致特殊值Double.POSITIVE_INFINITY。
答案 3 :(得分:0)
你除以double而不是int value。如果你有异常所以你必须除以int(0)变量。如果你除以float是double,你得到无限而不是异常。