1. 程式人生 > >異常處理——java基礎

異常處理——java基礎

Evernote Export

異常處理

 

 

  1. 異常處理的套路模板:
try//建立異常處理{   throw new();//丟擲異常 //一旦有異常, 丟擲異常後,後面的語句不再執行 語句;{ …… } }
  catch(抓捕什麼型別的異常){ 語句:{ …… } }  
  1. 異常處理的特點:
  • 異常處理是把將檢測錯誤從處理錯誤中分離出來。
 
  1. 異常型別分類:
  • 系統錯誤:error
  • 異常:Exception
  • 執行時異常:RuntimeException(一些例子)
    • ArithmeticException(可能引起的異常的原因:一個整數除以0)
    • NullPointerException(可能引起的異常的原因:企圖通過一個null引用變數訪問一個物件)
    • IndexOutOfBoundException(陣列的下標超出範圍)
    • IllegalArgumentException(可能引起的異常的原因:傳遞給方法的引數非法或不合適)
 
  1. 異常處理的操作
  • 問:如何在方法中宣告異常?
使用: public void get() throws Exception型別
  • 問:如何丟擲異常
定義:檢測一個錯誤的程式可以建立一個正確異常型別的物件並丟擲它,這稱為丟擲一個異常 使用: throw new 異常類("……"); 注意:
  • 宣告異常的關鍵字:throws
  • 丟擲異常的關鍵字:throw
 
  • 問:如何捕獲異常
使用: catch(引用異常型別 變數名)//捕獲異常{ 語句;   }  
  1. 從異常中獲取資訊
例如:下面可以利用java.lang.Throwable類中的例項方法獲取有關異常的資訊
  • getMessage();String
  • toString ();String
  • printStackTrace(); void
 
  1. finally子句
作用:不論異常是否出現或者是被捕獲,都希望執行某些程式碼。這時候就用finally子句 使用: try{   }   catch(theException ex){     }   finally{     }  
  1. 何時使用異常:
場景:一般來說,一個專案中多個類都會發生的共同異常應該考慮作為一種異常類。對於發生在個別方法中的簡單錯誤最好進行區域性處理,無需丟擲異常。  
  1. 重新丟擲異常
場景:如果異常處理沒有處理某異常,或者處理器只是希望它的呼叫者注意到該異常,就允許java異常處理器重新丟擲該異常 使用: try{     }   catch(Exception ex){   throw ex; }      
  1. 鏈式異常
package demo1; public class Demo4 { //鏈式異常 public static void main(String[] args ) { try { method1 (); }   catch (Exception ex ) { ex .printStackTrace(); } }   public static void method1() throws Exception {   try {   }   catch (Exception ex ) { throw new Exception( "new info from method1" , ex ); } }   public static void method2() throws Exception {   throw new Exception( "new info from method2" ); } }