try catch 与 return 和 finally 关系。

例如,我打开了一个不存在的文件
import java.io.*;
public class Demo {
     public static void main(String[] args) {
           try
         {
                       FileReader fr=new FileReader("d:\aa.txt");
         }
         catch(Exception e)
         {
             e.printStackTrace();
         }

         System.out.println("11");
     }
}
我自己试过,后面的11会打印出来,但我看视频时老师说异常后面的语句不会执行,所以想知道下具体的解答。

答:

1.try
          {
                      
          }
          catch(Exception e)
          {

          }

你的 11已经超出 异常捕抓呀。 你有异常处理要终止程序应该在 catch 里。

如果try块中的语句被后面的catch块捕获并处理了,那么try,,catch后面的语句就还会运行的,如果不被捕获,那后面的就不能运行

问题2:finally在return前执行还是return后?、

答: finally和return完全是独立执行了! 虽然finally先于return执行,不过finally无论如何都无法修改return的结果。

这就是为什么,一个方法最好只做一件事,而且尽量不能有多个返回值。(坑很深,切勿一个方法多个return!)。

原文地址:https://www.cnblogs.com/mr-gao/p/3933427.html