標籤:
-----參考於畢向東課程文檔
異常:
是什嗎?是對問題的描述。將問題進行對象的封裝。
------------
異常體系:
Throwable
|--Error
|--Exception
|--RuntimeException
異常體系的特點:異常體系中的所有類以及建立的對象都具備可拋性。
也就是說可以被throw和throws關鍵字所操作。
只有異常體系具備這個特點。
--------------
throw和throws的用法:
throw定義在函數內,用於拋出異常對象。
throws定義在函數上,用於拋出異常類,可以拋出多個用逗號隔開。
當函數內容有throw拋出異常對象,並未進行try處理。必須要在函數上聲明,都在編譯失敗。
注意,RuntimeException除外。也就說,函數內如果拋出的RuntimeExcpetion異常,函數上可以不用聲明。
--------------
如果函式宣告了異常,調用者需要進行處理。處理方法可以throws可以try。
異常有兩種:
編譯時間被檢測異常
該異常在編譯時間,如果沒有處理(沒有拋也沒有try),編譯失敗。
該異常被標識,代表這可以被處理。
運行時異常(編譯時間不檢測)
在編譯時間,不需要處理,編譯器不檢查。
該異常的發生,建議不處理,讓程式停止。需要對代碼進行修正。
--------------
異常處理語句:
try
{
需要被檢測的代碼;
}
catch ()
{
處理異常的代碼;
}
finally
{
一定會執行的代碼;
}
有三個結合格式:
1. try
{
}
catch ()
{
}
2. try
{
}
finally
{
}
3. try
{
}
catch ()
{
}
finally
{
}
注意:
1,finally中定義的通常是 關閉資原始碼。因為資源必須釋放。
2,finally只有一種情況不會執行。當執行到System.exit(0);fianlly不會執行。
--------------
自訂異常:
定義類繼承Exception或者RuntimeException
1,為了讓該自訂類具備可拋性。
2,讓該類具備操作異常的共性方法。
當要定義自訂異常的資訊時,可以使用父類已經定義好的功能。
異常異常資訊傳遞給父類的建構函式。
class MyException extends Exception
{
MyException(String message)
{
super(message);
}
}
自訂異常:按照java的物件導向思想,將程式中出現的特有問題進行封裝。
--------------
異常的好處:
1,將問題進行封裝。
2,將正常流程代碼和問題處理代碼相分離,方便於閱讀。
異常的處理原則:
1,處理方式有兩種:try 或者 throws。
2,調用到拋出異常的功能時,拋出幾個,就處理幾個。
一個try對應多個catch。
3,多個catch,父類的catch放到最下面。
4,catch內,需要定義針對性的處理方式。不要簡單的定義printStackTrace,輸出語句。
也不要不寫。
當捕獲到的異常,本功能處理不了時,可以繼續在catch中拋出。
try
{
throw new AException();
}
catch (AException e)
{
throw e;
}
如果該異常處理不了,但並不屬於該功能出現的異常。
可以將異常轉換後,在拋出和該功能相關的異常。
或者異常可以處理,當需要將異常產生的和本功能相關的問題提供出去,
當調用者知道。並處理。也可以將捕獲異常處理後,轉換新的異常。
try
{
throw new AException();
}
catch (AException e)
{
// 對AException處理。
throw new BException();
}
比如,匯款的例子。
異常的注意事項:
在子父類覆蓋時:
1,子類拋出的異常必須是父類的異常的子類或者子集。
2,如果父類或者介面沒有異常拋出時,子類覆蓋出現異常,只能try不能拋。
參閱
ExceptionTest.java 老師用電腦上課
ExceptionTest1.java 圖形面積。
class
{
public static void main(String[] args)
{
int x = 0;
try
{
x = 4;
}
catch ()
{
}
finally
{
System.out.println("x="+x);
}
}
}
Java基礎-異常-總結參考