黑马程序员技术交流社区

标题: 异常抛出的一个问题 [打印本页]

作者: 李海    时间: 2012-6-10 21:13
标题: 异常抛出的一个问题
本帖最后由 李海 于 2012-6-10 21:20 编辑

在函数上这样写抛出   int divSuan(int a , int b) throws Exception  的时候  在编译的时候  就会提示“E:\java-se>javac YiChangDemo.java
YiChangDemo.java:44: 错误: 未报告的异常错误Exception; 必须对其进行捕获或声明以便
抛出
        int  x=d.divSuan(4,1);
                        ^
1 个错误”  这样的错误

但是在函数中这样写抛出int divSuan(int a , int b) throws ArithmeticException  的时候   编译就能正常通过   

这是为什么????
作者: 赵兵锋    时间: 2012-6-10 22:24
ArithmeticException属于RuntimeException,是运行时异常,非检测异常,一般是由于编程失误录下bug造成,如数组下标越界ArrayIndexOutOfBoundsException,空值异常NullPointerException都是运行时异常,是可以通过修改代码避免的,所以不可以通过try-catch处理。
而Exception是可检测异常,是不可避免的,如文件找不到异常FileNotFoundException,这不是修改代码就能避免的,但一旦发生了,可以通过try-catch来处理。
作者: 李月    时间: 2012-6-11 09:33
Exceptoin中有一个特殊的子类异常RuntimeException 运行时异常。

如果在函数内容抛出该异常,函数上可以不用声明,编译一样通过。

如果在函数上声明了该异常。调用者可以不用进行处理。编译一样通过;

之所以不用在函数声明,是因为不需要让调用者处理。
当该异常发生,希望程序停止。因为在运行时,出现了无法继续运算的情况,希望停止程序后,
对代码进行修正。

ArithmeticException、ArrayIndexOutOfBoundsException、NullPointerException、ClassCastException等都是RuntimeException 的子类。








欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2