关于在Java中捕获异常的问题?

时间:2011-05-11 11:10:14

标签: java exception

我有以下代码:

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");
        } 
    }

然后异常不抛出。我真的不明白。 有人可以详细说明吗?

4 个答案:

答案 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,你得到无限而不是异常。