关于运行时异常的处理机制

gzhanyf 2010-04-26 03:23:21
我发现定义一个可能抛出运行时异常的方法时,在方法名后面是不写throws关键字来显示地将异常抛给上一层调用者的,那么这个运行时异常时如何处理的呢?是系统自动将异常递归抛给上一层调用者直到遇到处理者还是说不抛出给上层调用者而直接由jvm处理异常?
...全文
172 8 打赏 收藏 转发到动态 举报
写回复
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
gzhanyf 2010-04-26
  • 打赏
  • 举报
回复
懂了,看来checked异常和unchecked异常处理机制一样,只不过unchecked异常不捕获时不用程序员自己显式throws exception而已,系统自动抛出
soli11722984 2010-04-26
  • 打赏
  • 举报
回复
谁调用Test就谁处理,要是那个都不处理,就一直往上传,直到最顶,然后就JVM处理

JVM处理。。。。。。就直接给你停下来
gzhanyf 2010-04-26
  • 打赏
  • 举报
回复
我知道RuntimeException也可捕获,但是我是说如果既不用try catch捕获,定义方法时也不用throws抛出,那么这个runtimeException是怎么处理的?

比如下面的例子:

class MyRuntimenException extends RuntimeExcepion {
public MyRuntimenException() {
super();
}
public MyRuntimenException(String msg) {
super(msg);
}

}

class Test {
public void test {
throw new MyRuntimenException ();

}

}

像test方法里出现了这个运行时异常,系统是如何处理的?
yugong2009 2010-04-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zjwilove4 的回复:]
将异常递归抛给上一层调用者直到遇到处理者
[/Quote]
如果没有try catch则会抛出JVM
believefym 2010-04-26
  • 打赏
  • 举报
回复
[Quote=引用楼主 gzhanyf 的回复:]
我发现定义一个可能抛出运行时异常的方法时,在方法名后面是不写throws关键字来显示地将异常抛给上一层调用者的,那么这个运行时异常时如何处理的呢?是系统自动将异常递归抛给上一层调用者直到遇到处理者还是说不抛出给上层调用者而直接由jvm处理异常?
[/Quote]

这个要看需求的,因为runtime的exception本来就是不可预知的,不可能因为有这种可能,就每个都来个try catch

如果是web的,配个500的页面,出错时自动转到那个告诉用户系统出错,联系管理员的那个页面就是一种解决方案,不会把无意义的exception直接暴露给用户

又比如一些小的j2se的工具,其实直接抛exception给用户也无所谓,用户一看就知道出什么错了,比如文件路径,网络连接之类的
lu76689614 2010-04-26
  • 打赏
  • 举报
回复
Java对异常(Exception)的处理方法分为两类:


一类将异常的处理递交给当前方法的调用者去处理,称为 throws a Exception,
另一类则在方法中使用try/catch/finally语句自己处理异常。
zjwilove4 2010-04-26
  • 打赏
  • 举报
回复
将异常递归抛给上一层调用者直到遇到处理者
soli11722984 2010-04-26
  • 打赏
  • 举报
回复
try{
...
}catch(){
...
}

还是一样捕获,不过就是捕获RuntimeException或者直接Exception再或者RuntimeException的子类。。。。。。
相关推荐

62,567

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告