异常处理。。在主函数中调用某个方法,为什么没有抓住方法中写的异常?

public class Computer {
double c ;
public void div(double a,double b){

    try{
         c = a/b;
    }
    catch(NumberFormatException e){
        e.printStackTrace();
        System.out.println("格式化数据异常。");
    }
    catch(ArithmeticException e){
        e.printStackTrace();
        System.out.println("出现算术异常。");
    }
    catch(Exception e){
        e.printStackTrace();
        System.out.println("出现其他异常。");
    }
    System.out.println("两个数的商是:"+c);
}

}
public class test {
public static void main(String[] args) {
Computer c = new Computer();
c.div(0,0);
}
}

 运行结果
 两个数的商是:NaN

 为什么没有抓住异常呢?




NaN的意思是不存在,无意义.
double中的0不是真正的0或0.0 而是一个很长的,可能是0.000000000001或其它,所以一个正数除以0.0结果就得很大很大。负数除以0.0, 0.0/0.0 一样道理。 浮点数是使用二进制数据的科学计数法表示,所以不可能精确表示一个浮点数
谢谢

我试了一下你的程序,没有什么问题。你可以重新把程序拿到一个新的项目中运行一下试试。我感觉是没有问题的。图片图片