異常處理方式二:throws
阿新 • • 發佈:2021-10-05
1 package com.fu.java5; 2 3 import org.junit.jupiter.api.Test; 4 5 import java.io.File; 6 import java.io.FileInputStream; 7 import java.io.FileNotFoundException; 8 import java.io.IOException; 9 10 /** 11 * 異常處理的方式二、throws + 異常型別 12 * 1."throws + 異常型別" 寫在方法的宣告處,指明此方法執行時,可能丟擲的異常型別。 13 * 一旦當方法體執行時出現異常,仍會在異常程式碼處生成一個異常類的物件,此物件滿足throws後異常型別時,就會14 * 被拋。異常程式碼後續的程式碼,就不再執行了。 15 * 2.體會:try-catch-finally真正將異常處理掉了。 16 * throws的方式只是將異常拋給了方法的呼叫者。並沒有真正的將異常處理掉。 17 * 18 *3.開發中如何選擇使用try-catch-finally還是使用throws? 19 * 3.1 如果父類中被重寫的方法沒有throws方法處理異常,則子類重寫的方法也不能使用throws,意味著如果子類 20 * 重寫的方法有異常,必須使用try-catch-finally方法處理 21 * 3.2 在執行的方法a中,先後有呼叫了另外的幾個方法,這幾個方法時遞進關係執行的。我們建議這幾個方法使用throws的方法22 * 處理,而執行的方法a可以用try-catch-finally處理 23 * 24 */ 25 public class ExceptionTest2 { 26 27 public static void main(String[] args) { 28 try { 29 method2(); 30 } catch (IOException e) { 31 e.printStackTrace(); 32 } 33 } 34 public staticvoid method2()throws IOException{ 35 method1(); 36 } 37 38 public static void method1() throws FileNotFoundException, IOException { 39 File file = new File("hello.txt"); 40 FileInputStream fis = new FileInputStream(file); 41 int data = fis.read(); 42 while (data != -1){ 43 System.out.print((char)data); 44 data = fis.read(); 45 } 46 fis.close(); 47 } 48 }
1 package com.fu.java5; 2 3 import java.io.FileNotFoundException; 4 import java.io.IOException; 5 import java.nio.file.FileSystemNotFoundException; 6 7 /** 8 * 方法重寫的規則之一: 9 * 子類重寫的方法丟擲的異常型別不大於父類父類被重寫的方法丟擲的異常型別。 10 * 11 * 12 * 13 */ 14 public class OverrideTest { 15 public static void main(String[] args) { 16 OverrideTest test = new OverrideTest(); 17 test.display(new SubClass()); 18 } 19 public void display(SuperClass s){ 20 try { 21 s.method(); 22 } catch (IOException e) { 23 e.printStackTrace(); 24 } 25 } 26 } 27 28 class SuperClass{ 29 public void method()throws IOException { 30 31 } 32 } 33 class SubClass extends SuperClass{ 34 public void method()throws FileNotFoundException { 35 36 } 37 }此為本人學習筆記,若有錯誤,請不吝賜教