Java異常處理

何爲異常?

異常:指的是程序在執行過程中,出現的非正常的情況,最終會導致JVM的非正常停止。
在Java等面向對象的編程語言中,異常本身是一個類,產生異常就是創建異常對象並拋出了一個異常對象。
Java處理異常的方式時中斷處理。
注意:異常指的並不是語法錯誤,語法錯了,因爲編譯不通過,不會產生字節碼文件,根本不能運行。

異常處理的幾種方式

1、 throw關鍵字

作用:使用throw關鍵字在指定的方法中拋出指定的異常。
使用格式:

		throw new xxxException("異常產生的原因");

注意:

  • throw關鍵字必須寫在方法的內部
  • throw關鍵字後邊new的對象必須是Exception或者Exception的子類對象
  • throw關鍵字拋出指定的異常對象,我們就必須處理這個異常對象

2、Objects非空判斷

Objects類中的靜態方法
public static <T> T requireNonNull(T obj):查看指定引用對象不是null
源碼:
public  static <T> T requireNonNull(T obj){
	if(obj==null)
		throw new NullPointerException();
	return obj;
}

3、throws關鍵字

作用:
當方法內部拋出異常對象的時候,那麼我們就必須處理這個異常對象。使用throws關鍵字處理異常對象,會把異常對象拋出給方法的調用者處理(自己不處理,給別人處理),最終交給JVM處理–>中斷處理
使用格式:

修飾符 返回值類型 方法名(參數列表) throws AAAExcption,BBBException...{
	throw new AAAException("產生原因");
	throw new BBBException("產生原因");
	...
}

注意:

  • throws關鍵字必須寫在方法聲明處
  • throws關鍵字後邊聲明的異常必須是Exception或者是Exception的子類
  • 方法內部如果拋出了多個異常對象,那麼throws後邊必須也聲明多個異常;如果拋出的多個異常對象有子父類關係,那麼直接聲明父類異常即可
  • 調用了一個聲明拋出異常的方法,我們就必須的處理聲明的異常

4、try…catch

作用:自己處理異常
使用格式:

try{
	可能產生異常的代碼;
}catch(定義一個異常的變量,又來接收try中拋出的異常對象){
	異常的處理邏輯,異常對象之後,怎麼處理異常對象
	一般會記錄在一個日誌中
}
...
catch(異常類名 變量名){
	
}

注意:

  • try中可能會拋出多個異常對象,那麼就可以使用多個catch來處理這個異常對象
  • 如果try中產生了異常,那麼就會執行catch中的異常處理邏輯,執行完畢catch中的處理邏輯,繼續執行try catch之後的代碼
  • 如果try中沒有產生異常,那麼就不會執行catch中異常的處理邏輯,執行完try中的代碼,繼續執行try開始之後的代碼

5、finally代碼塊

格式

try{
	可能產生異常的代碼;
}catch(定義一個異常的變量,又來接收try中拋出的異常對象){
	異常的處理邏輯,異常對象之後,怎麼處理異常對象
	一般會記錄在一個日誌中
}
...
catch(異常類名 變量名){
	
}finally{
	無論是否出現異常都會執行
}

注意:

  • Finally不能單獨使用,必須要和try一起使用
  • Finally一般用於資源釋放,無論程序是否出現異常,最後都要資源釋放(IO)

6、自定義異常類

如果java提供的異常類不夠我們使用,需要自己定義一些異常類
格式:

public class XXXException extends Exception|RuntimeException{
	添加一個空參數的構造方法;
	添加一個帶異常信息的構造方法;
}

注意:

  • 自定義異常類一般都是以exception結尾,說明該類是一個異常類
  • 自定義異常類必須繼承exception或者RuntimeException
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章