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:抛出一个异常,至于该异常被捕获还是继续抛出都与它无关
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。