ch09 例外事件的產生與處理

9-1 執行上的錯誤

執行中的錯誤可以分成下列2種,都是 Throwable

參考 page 9-3 圖 9-1 Throwable 的階層價構圖

9-2 Java 例外事件與處理機制

9-2-1 例外事件的產生

參考 page 9-4 程式範例 ExceptWithoutHandle.java

9-2-2 例外事件機制

參考 page 9-5 程式範例 ExceptHandle.java

參考 page 9-5 try-catch-finally 說明

try {
	// 可能發生錯誤的程式
} catch (ArithmeticException e) {
	// 一旦發生錯誤時,轉移到此
} finally {
	// 一定要執行的程式
}

參考 page 9-7 catch 區塊排列規則

9-3 使用 throw 自行產生例外事件

參考 page 9-8 程式範例 ExceptThrow.java

9-4 自訂例外類別

參考 page 9-9 程式範例 ExceptCustom.java

9-5 使用 throws 拋出力外事件

參考 page 9-11 程式範例 Propagate.java

page 9-13 方法改寫時,parent類別方法throws的例外類別藥班含子類別方法 throws 的例外類別

參考 page 9-13 程式範例 ExceptOverride.java

9-6 RuntimeException 與 Checked Exception

Exception 類別分為:

參考 page 9-14 程式範例 ExceptRuntimeChecked.java

9-7 測試程式與 AssertionError 錯誤事件

// assert 條件式要false才會觸發 AssertionError
assert price >= 0.0 : "書籍定價不可為負數";
// 加上 -ea 啟動測試程式
java -ea AssertEx

參考 page 9-16 程式範例 AssertEx.java

9-8 StackOverflowError 錯誤事件

參考 page 9- 程式範例 Recursive.java

參考 page 9- 程式範例 ObjectDeclare.java

參考 page 9- 圖 9- 範例 ArgPass 圖解

參考 page 9- 注意