关于异常捕获的问题
我的一个方法里面有try,catch,其中这个方法里面只try了部分代码,但是我catch的是所有Exception。如果不在try里面的代码报异常了,能catch到吗?
例如:
public void method(){
method1();
try{
method2();
}catch(Exception e){
.......
}
}
如果method1报了异常能catch到吗?
有没有对异常讲解比较好的文章
如果method1抛了异常,整个程序就已经结束,在控件台里的异常显示会说明在method1这一行出了异常,程序根本就不会进入到try里了,如果要捕获这个异常来使用,也可以给method1单独的来一个try catch
肯定不会,那么那try来做什么?
问题补充:
liruimin 写道
如果method1抛了异常,整个程序就已经结束,在控件台里的异常显示会说明在method1这一行出了异常,程序根本就不会进入到try里了,如果要捕获这个异常来使用,也可以给method1单独的来一个try catch
意思说这个异常交给系统来处理咯
因为你这个异常没有处理,系统遇到这个异常之后只能抛出
try catch只对它监控的部分进行异常捕获,而没这个try里面的异常是捕获不了的;
或者你自己写一个throw 捕获处理器,在这个处理器里面处理你的异常。
method1出现异常,
method的catch捕获不到。
method2(); 出现异常,也要看你的处理方式。如果你没有throw出来,也捕获不到。
关于异常的讲解,可能不太容易找到你想要的那种。
一般来说,底层的方法向上抛异常。
在你运行的方法里来捕获并处理。
你可以参考一下
http://www.iteye.com/topic/857443
JAVA异常设计原则
程序是一般情况下是顺序执行的,只要你的程序写的没有问题,try catch是不会对性能有影响的,我们用trycath的时候,是说明你调用的这个方法会有一个系统抛出的异常,所以要捕获,你可以在特定异常下做特定的操作,一般的程序有try和catch也不会有异常抛出的
method1异常,下面的try肯定捕获不到。method1异常,程序就结束了,因为你没有用throws向上抛出异常,也没有在method中处理异常
[code="java"]
public void method() throws Exception{
//方法体
}
[/code]
不会被catch捕获,catch和try是对应的,只有try块里的代码出现异常时才会被相应的catch捕获