閱讀Stephens' C#教材第二十一章筆記
Chapter 21 Handling Errors.
本章將介紹如何進行錯誤處理,最好的處理方式就是讓使用者有能力在第一時間對錯誤的發生有能力應變。
錯誤就是一種誤差(An error is a mistake.),可能是設計時考慮不夠周延,可能是使用者的錯誤操作,也可能是程式碼寫錯。
在C#中例外(exception)的產生,就是開發平台告訴程式有一些壞的結果發生了,可能是發生除以0,或是存取一個不存在的陣列,或是把ten傳入數值運算中。
在C#可以使用Try-Catch區塊進行錯誤處理,詳細資料請參考微軟網頁
基本語法結構為:
try
{
...codeToProtect...
}
catch (ExceptionType1 ex)
{
...exceptionCode1...
}
catch (ExceptionType2 ex)
{
...exceptionCode2...
}
finally
{
...finallyCode...
}
- 可能發生錯誤要保護的程式碼(codeToProtect):這段程式可能會發生錯誤丟出例外(exception)。
- 例外型別(ExceptionType1, ExceptionType2):發生例外的型別例如FormatException或DivideByZeroException,這是codeToProtect發生錯誤時丟出來的錯誤資料型別。
- 錯誤內容變數(ex):變數內存有錯誤內容,可供進一步看見錯誤發生的問題原因。
- 處理錯誤程式碼(exceptionCode):當錯誤發生後,如果型別跟所Catch到的一樣,則會執行本段程式碼。
- finallyCode(這個詞沒看過有人翻譯它):無論有錯誤發生與否,最後一定要執行的程式碼。
CatchException程式示範使用Try-Catch區塊處理除以0的錯誤情形
LCM程式示範將Try-Catch區塊加入到calculateButton_Click方法中,如果出現輸入-36的資料,程式不會中斷運行,會出現錯誤訊息的提醒,讓使用者有調整的機會。
TRY IT中示範如何設計出下圖程式,其中將Try-Catch區塊加入,可有效捕捉數字輸入ten這種錯誤的發生。