Java異常總結

異常:程序中導致程序中斷的一種指令流。

異常分爲Error和Exception異常,他們都是Throwable的子類。
•Error:指的是JVM錯誤,這時的程序並沒有執行,無法處理;(並沒有執行,用戶很難處理)
•Exception:指的是程序運行中產生的異常,用戶可以使用異常格式處理。(運行中,用戶可自行處理)

使用異常處理的好處:可以維持程序的穩定性和可靠性。
Java的異常處理主要依賴於try、catch、finally、throws和throw五個關鍵字。

try、catch、finally:try裏放可能發生異常的代碼,catch用於捕捉並處理try塊中的異常,finally表示不管是否有出現異常,都統一執行的代碼。

try{
  // 
}catch(異常類型1 異常的變量名1){
  // 
}catch(異常類型2 異常的變量名2){
  // 
}finally{
  // 
}

說明:
finally中最後不要有返回值。

catch中:
catch(Exception e){
e.printStackTrace();}

printStackTrace()是所有異常類中都會提供的方法,Exception是表示能夠處理所有異常類型。

throws、throw的區別:
•throws:在方法的聲明上使用(方法頭),表示此方法在調用時必須處理異常。(有throws必須加上try、catch)

•throw:在方法中(方法體)人爲拋出一個異常類對象(手工調用異常類的構造方法,這個異常類對象可能是自己實例化或者是拋出已存在的)

在主方法上使用throws:表示此異常產生後直接通過主方法拋出,代碼中可以不強制使用異常處理。

RuntimeException(運行時異常):不會強制要求我們處理異常,可以讓我們有選擇性的處理,但是如果沒有處理又發生了異常,就交給JVM默認處理。
RuntimeException的繼承關係:

java.lang.Object
	|java.lang.Throwable
		|java.lang.Exception
			|java.lang.RuntimeException

RuntimeException和Exception的區別:
前者是後者的子類;Exception定義了必須處理的異常,而RuntimeException定義的異常可以選擇性的處理。

常見的RuntimeException:
NullPointerException(空指針異常)、
NumberFormatException(數字轉換異常)、
ClassCaseException(強制轉換異常)、 
ArrayIndexOutOfBoundException(數組越界異常)

自定義異常:只需要繼承Exception(強制性處理)或RuntimeException(選擇性處理),然後在程序中使用throw進行異常對象的拋出。

定義MyException:

class MyException extends Exception {
	public MyException(String i){
		super(i);
	}
}

public class Test11 {
	public static void main(String[] args) {
		int num = 6;
		try{
			if(num<10){
				throw new MyException("傳遞的數值應大於10");
			}
		}catch(Exception e ){
			e.printStackTrace();
		}
	}
}

什麼時候使用自定義異常:當你發現你想說明的異常情況沒有時,就自行創建。

發佈了33 篇原創文章 · 獲贊 1 · 訪問量 4705
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章