return和finally的执行顺序简介说明
下文笔者讲述return和finally的运行顺序,如下所示
在Java中
异常处理主要由try、catch、throw、throws和finally5个关键字处理
Java代码中
一旦出现了异常
而且没有被try-catch块捕获的话
系统会把异常一直往上层抛
直到遇到处理代码
如果一直没有处理块,就抛到最上层
如果是多线程就由Thread.run()抛出
如果是单线程就被main()抛出
抛出之后
如果是子线程,这个子线程就退出了
如果是主程序抛出的异常,那么这整个程序也就退出了。
例:
try {
//step1
System.out.println("try...");
throw new RuntimeException("异常1...");
}catch (Exception e){
//step2
System.out.println("catch。。。");
}finally {
//step3
System.out.println("finally。。。");
}
//step4
System.out.println("end...");
上述的代码中由于抛出的异常被顺利catch住
所以当前线程不会结束
程序会继续往下执行
step4这步代码会被打印出来
例2
try {
System.out.println("try...");
throw new RuntimeException("异常1...");
}catch (Exception e){
System.out.println("catch。。。");
throw new RuntimeException("异常2...");
}finally {
System.out.println("finally。。。");
}
System.out.println("end...");
上面的java代码,
由于catch块中又抛出了一个异常
而这个异常没有相应的catch块处理
所以系统会向上抛这个异常
最后的打印语句也就的不到执行。
try、catch、finally、throw和throws使用归纳
try、catch和finally都不能单独使用 只能是try-catch、try-finally或者try-catch-finally。 try语句块监控代码,出现异常就停止执行下面的代码 然后将异常移交给catch语句块来处理 catch块执行完之后代码还会继续往下执行 finally语句块中的代码一定会被执行,常用于回收资源 throws:声明一个异常,告知方法调用者 throw:抛出一个异常,至于该异常被捕获还是继续抛出都与它无关
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


