1 package cn.xiaocangtian.Exception; 2 3 import java.io.FileInputStream; 4 import java.io.FileNotFoundException; 5 import java.io.IOException; 6 7 public class TestException3 { 8 public static void main(String[] args) { 9 String str = new TestException3().openFile(); 10 System.out.println(str); 11 12 } 13 14 String openFile() { 15 /** 16 * 执行顺序 1. 执行 try {} catch () {} 17 * 2. 执行 finally 如果在finally中有return语句,则不会再指行try or catch 中的return了! 18 * 3. 最后执行try or catch 中 的return 语句 19 */ 20 try { 21 System.out.println("aaa"); 22 FileInputStream fls = new FileInputStream("E:/Java_All_Code/Test/test1.txt"); //对应FileNotFoundException 23 int a = fls.read(); //对应 IOException 24 System.out.println("bbb"); 25 return "Step0"; //文件打开成功,则是应该在这里执行return 26 } catch (FileNotFoundException e) { 27 // TODO Auto-generated catch block 28 System.out.println("Catching1.。.."); 29 e.printStackTrace(); 30 return "Step1"; //如果文件打开失败,则应该在这里执行return 31 } catch (IOException e) { 32 System.out.println("Catching2...."); 33 e.printStackTrace(); 34 return "Step2"; 35 } finally { 36 System.out.println("Finally !!!"); 37 // return "fff"; //不要在finally中使用 return!!虽然可以用,但是习惯不好,会覆盖try or catch中的return 38 } 39 40 } 41 }