【Java筆記】異常處理

思維導圖
重點:
異常的概念
異常處理機制

難點:
try-catch-finally(掌握)
throw、throws關鍵字 (瞭解)

目錄

1、異常處理概述


什麼是異常:
異常就是在程序的運行過程中所發生的意外事件,它中斷指令的正常執行。
Java中提供了一種獨特的處理異常的機制,通過異常來處理程序設計中出現的錯誤。

爲什麼使用異常處理:
將出錯處理和正常代碼分開。增加程序的可讀性。

在Java中,處理這種情況的方法是利用異常處理,把出錯處理和正常代碼分開,Java異常處理通過5個關鍵字try,catch,finally,throw和throws進行管理。

//傳統方法
makeFriends( ) {
     上交友網站註冊信息;打不開咋辦?

     尋找合適對象;沒有合適的對象咋辦?

      預約見面;沒有成功咋辦?

      交談甚歡;沒有共同語言咋辦?

      互留電話;  不留電話咋辦?

}
解決方法:寫大量的if語句。
//Java解決方法
makeFriends(  ) {//結構清楚,無需自己判斷,代碼量小。
  try {
            上交友網站註冊信息;
             尋找合適對象;
             預約見面;
             交談甚歡;
             互留電話;  
          }
   catch (網站註冊失敗) {
       處理代碼; } 
   catch (尋找合適對象失敗) {
        處理代碼;  } 
   catch (約會失敗) {
        處理代碼;  }
   catch (交談失敗) {
        處理代碼;  } 
  catch (互留電話失敗) {
        處理代碼;  }
}

2、常見異常及其用途這裏寫圖片描述 這裏寫圖片描述

3、java程序對異常的兩種處理方式


1)捕獲異常(try/catch/finally):就地解決,並使程序繼續執行。

這裏寫圖片描述
多重catch塊
舉例如下:

public class ExceptionTest1 {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        try{
            int a=3/0;
        }catch(Exception e){
            System.out.println(e);
        }finally{
            System.out.println("this is final sentence.");
        }
    }

}
//輸出結果:
java.lang.ArithmeticException: / by zero
this is final sentence.

2)聲明拋棄異常 即 自定義異常類(throws/throw):將異常向外轉移,即將異常拋出方法之外,由調用該方法的環境去處理。

throw是語句拋出異常,一般是在代碼塊內部,當程序出現某種邏輯錯誤時由程序員主動拋出某種特定類型的異常

public static void main(String[] args) { 
    String s = "abc"; 
    if(s.equals("abc")) { 
      throw new NumberFormatException(); 
      //拋出的異常類型也可以是自定義的
    } else { 
      System.out.println(s); 
    } 
    //function(); 
}

throws是方法可能拋出異常的聲明。(用在聲明方法時,表示該方法可能要拋出異常)
public void function() throws Exception{……}

public class testThrows(){
public static void function() throws NumberFormatException{ 
//拋出的異常也可以是自定義的異常。
String s = "abc"; 
System.out.println(Double.parseDouble(s)); 
} 

public static void main(String[] args) { 
try { 
function(); 
//當某個方法可能會拋出某種異常時用於throws
// 聲明可能拋出的異常,然後交給上層調用它的方法程序處理
} catch (NumberFormatException e) { 
System.err.println("非數據類型不能強制類型轉換。"); 
//e.printStackTrace(); 
} 
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章