[求助]一个异常处理问题
下列语句中第二个语句S2出现了一个异常,那么
try{
S1;
S2;
S3;
}catch(ExceptionType e1){}
catch(ExceptionType e2){}
S4;
问题
1:S3会执行吗?
2:如果异常未被捕获,S4会被执行吗?
3:如果catch子句捕获了异常,S4会执行吗?
请说明原因.
多谢!
下列语句中第二个语句S2出现了一个异常,那么
try{
S1;
S2;
S3;
}catch(ExceptionType e1){}
catch(ExceptionType e2){}
S4;
问题
1:S3会执行吗?
2:如果异常未被捕获,S4会被执行吗?
3:如果catch子句捕获了异常,S4会执行吗?
请说明原因.
多谢!
引用5楼话:
2
既然异常没被捕获 S4为什么不执行呢?
这是因为try/catch没有捕捉到发生的异常,则把该异常提交给他的上级处理,由上级捕捉.
如果还没有捕捉到,再提交,知道给他的顶层线程,如还不能结束此线程.
s4是在try块外面的,所以不论是否发生异常都是会执行的,除非在处理异常时将程序结束。
在try块里面,无论哪一条语句发生异常,都是会直接跳转到catch里面进行异常处理
如果在try块里面没有发生异常,则顺序执行。