黑马程序员技术交流社区
标题:
运行时异常抛出问题
[打印本页]
作者:
张秀威
时间:
2013-11-3 00:46
标题:
运行时异常抛出问题
本帖最后由 张秀威 于 2013-11-3 21:02 编辑
实现这个RuntimeException之后叫运行时异常,那么为什么我在下面的int method()方法中抛出异常之后,而在int method()方法上不用声明呢,还有一种情况就是我在int method()方法上声明了异常之后,为什么调用者可以不用进行异常处理且照样通过编译呢
class FuShuException1 extends RuntimeException
{
FuShuException1(String msg)
{
super(msg);
}
}
class Demo4
{
int method(int a,int b) //throws ArithmeticException 这里怎么不用声明了???而且也没有编写代码进行异常处理!!
{
if(b<0)
throw new FuShuException1("除数出现负数啦");
if(b==0)
throw new ArithmeticException("被零除了");
return a/b;
}
}
public class RunTimeException {
public static void main(String[] args) {
Demo4 d=new Demo4();
System.out.println(d.method(5,-8));
System.out.println("over");
}
}
复制代码
作者:
回天之力
时间:
2013-11-3 08:36
必须是这样啊,RuntimeException这个是运行时异常,在编译时不报错,且在函数上不用throws,如果有异常,在java运行时,如果没有catch,那么直接交给jvm处理。
而RuntimeException的父类Exception,是编译时报错,如果在语句中有throw,且没有自己catch,那么必须在函数上声明(即throws)。
作者:
黄炳期
时间:
2013-11-3 10:51
加油啊!
作者:
Uncle.Lee
时间:
2013-11-3 12:33
异常分两类:1,编译时被检测的异常;2,编译时不被检测的异常(运行时异常);
RuntinmeException是Exception的一个特殊子类;
RuntinmeException及其子类就是属于第二种运行时异常的;如果函数内容抛出此异常,函数可以不用声明,编译一样通过;如果函数上声明了该异常,调用者可以不用处理,一样能通过编译
作者:
黄炳期
时间:
2013-11-3 13:30
如果问题已经解决,请及时修改主题为“提问结束”。
修改主题的方法链接
http://bbs.itheima.com/thread-89313-1-1.html
作者:
冯国强
时间:
2013-11-3 17:42
该异常出现时,不希望调用者进行处理。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2