1. 程式人生 > 其它 >異常處理方式一:try-catch-finally

異常處理方式一:try-catch-finally

 1 package com.fu.java5;
 2 
 3 import org.junit.jupiter.api.Test;
 4 
 5 /**
 6  * 一、異常的處理;抓拋模型
 7  * 過程一:“拋” :程式在正常執行的過程中,一旦出現異常,就會在異常程式碼出生成一個對應異常的物件。
 8  *              並將此物件丟擲。
 9  *              一旦丟擲物件以後,其後的程式碼就不在執行。
10  *        關於異常物件的產生:① 系統自動生成的異常物件
11  *                         ② 手動生成異常物件並丟擲(throw)
12 * 13 * 過程二:“抓” :可以理解為異常的處理方式:①try-catch-finally ② throws 14 * 15 * 二、try-catch-finally的使用 16 * try{ 17 * //可能出現異常的程式碼 18 * 19 * }catch(異常型別1 變數名1){ 20 * //處理異常的方式1 21 * }catch(異常型別2 變數名2){ 22 * //處理異常的方式2 23 * }catch(異常型別3 變數名3){ 24 * //處理異常的方式3 25 * } 26 * .... 27 * finally{
28 * //將一定會執行的程式碼放在這裡 29 * } 30 * 31 * 說明: 32 * 1.finally是可選的。 33 * 2.使用try將可能出現異常的程式碼包裝起來,在執行過程中,一旦出現異常,就會生成一個對應異常類的物件,根據此物件的型別,據此 34 * 物件的型別,去catch中進行匹配。 35 * 3.一旦try中的異常物件匹配到某一個catch時,就進入catch中進行處理。一旦處理完成,就跳出 36 * 前的try-catch結構(在沒有寫finally的情況)。繼續執行其後的程式碼 37 * 4.catch中的異常型別如果沒有子父類關係,則誰宣告在上,誰宣告在下,無所謂。
38 * catch中的異常型別如果滿足子父類關係,則要求子類一定宣告在父類上面,否則報錯。 39 * 5.常用的異常處理的方式:① String getMessage() ②printStackTrace() 40 * 6.在try結構中宣告的變數,在出了try結構以後,就不能再被呼叫 41 * 42 *體會1:使用try-catch-finally處理編譯時異常,使得程式再編譯時就不再報錯,但是執行時仍可能報錯,相當於我們使用try-catch--finally結構 43 * 將一個編譯可能出現異常的結構延遲到執行時出現。 44 * 體會2:開發中,由於執行時異常比較常見,所以我們通常就不針對執行時異常編寫try-catch-finally了。 45 * 針對編譯時異常,我們就一定要考慮異常的處理。 46 */ 47 public class ExceptionTest1 { 48 @Test 49 public void test1(){ 50 int[] arr = null; 51 try { 52 System.out.println(arr[3]); 53 System.out.println("hello----1"); 54 }catch (NullPointerException e){ 55 // System.out.println("出現空指標異常,不要著急..."); 56 //String getMessage(); 57 // System.out.println(e.getMessage()); 58 //printStackTrace 59 e.printStackTrace(); 60 }catch(NumberFormatException e){ 61 System.out.println("出現數值轉換異常,不要著急..."); 62 }catch(Exception e){ 63 System.out.println("出現異常,不要著急..."); 64 } 65 System.out.println("hello----2"); 66 67 } 68 }
 1 package com.fu.java5;
 2 
 3 import org.junit.jupiter.api.BeforeEach;
 4 import org.junit.jupiter.api.Test;
 5 
 6 /**
 7  * try-catch-finally中finally的使用:
 8  * 1.finally是可選的
 9  * 2.finally中宣告的是一定會被執行的程式碼。即使catch中又出現異常了,try中有return語句,catch中有return語句等情況。
10  * 3.像資料庫連線、輸入輸出流、網路程式設計Socket等資源,JVM是不能自動回收的,我們需要自己手動的進行資源的釋放,此時的
11  *   資源釋放,就需要宣告在finally中。
12  *
13  *
14  */
15 public class FinallyTest {
16 
17     @Test
18     public void test2(){
19             System.out.println();
20     }
21 
22     @Test
23     public void test1(){
24         try {
25         int a = 10;
26         int b = 0;
27         System.out.println(a/b);
28         }catch (ArithmeticException e){
29             e.printStackTrace();
30         }finally {
31             System.out.println("hello");
32         }
33     }
34 }
此為本人學習筆記,若有錯誤,請不吝賜教