A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李海 中级黑马   /  2012-6-10 21:13  /  2239 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李海 于 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  的时候   编译就能正常通过   

这是为什么????

2 个回复

倒序浏览
ArithmeticException属于RuntimeException,是运行时异常,非检测异常,一般是由于编程失误录下bug造成,如数组下标越界ArrayIndexOutOfBoundsException,空值异常NullPointerException都是运行时异常,是可以通过修改代码避免的,所以不可以通过try-catch处理。
而Exception是可检测异常,是不可避免的,如文件找不到异常FileNotFoundException,这不是修改代码就能避免的,但一旦发生了,可以通过try-catch来处理。
回复 使用道具 举报
Exceptoin中有一个特殊的子类异常RuntimeException 运行时异常。

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

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

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

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



回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马