【學習資料】
《C#圖解教程》(第22章):https://www.cnblogs.com/moonache/p/7687551.html
電子書下載:https://pan.baidu.com/s/1mhOmBG0
【筆記】
try | 一個 try 塊標識了一個將被激活的特定的異常的代碼塊。后跟一個或多個 catch 塊。 |
catch | 程序通過異常處理程序捕獲異常。catch 關鍵字表示異常的捕獲。 如果catch不寫(except)具體捕獲哪個異常,則表示捕獲所有的異常。 |
finally | finally 塊用於執行給定的語句,不管異常是否被拋出都會執行。 例如,如果您打開一個文件,不管是否出現異常文件都要被關閉。 |
throw | 當問題出現時,程序拋出一個異常。使用 throw 關鍵字來完成。 |
- C#中內置的異常類型
- C# 中的異常類主要是直接或間接地派生於 System.Exception 類。System.ApplicationException 和 System.SystemException 類是派生於 System.Exception 類的異常類。
- System.ApplicationException :支持由應用程序生成的異常。所以程序員定義的異常都應派生自該類。
- System.SystemException :是所有預定義的系統異常的基類。
- 下表列出了一些派生自 Sytem.SystemException 類的預定義的異常類:
- 舉個例子
-
int result = 0; int num1 = 25; int num2 = 0; try { result = num1 / num2; } catch (DivideByZeroException e) // 捕獲除以0的異常 { Debug.Log(string.Format("Exception caught: {0}", e)); } finally // 不管是否異常,都會執行 { Debug.Log(string.Format("Result: {0}", result)); } // 輸出結果 // Exception caught: System.DivideByZeroException: Attempted to divide by zero. // at ...... // Result: 0
-
- 用戶自定義異常類型
- 用戶自定義的異常類是派生自 ApplicationException 類
-
// 自定義異常 public class TempIsZeroException : ApplicationException { public TempIsZeroException(string message) : base(message) { } } namespace UserDefinedException { class TestTemperature { public static void ShowTemp(int temperature) { if (temperature == 0) { // 拋出自定義異常 TempIsZeroException throw (new TempIsZeroException("Zero Temperature found")); } } static void Main(string[] args) { try { ShowTemp(0); } catch (TempIsZeroException e) // 捕獲自定義異常 { Console.WriteLine("TempIsZeroException: {0}", e.Message); } Console.ReadKey(); } } }