C# 語言的異常處理功能可幫助您處理程序運行時出現的任何意外或異常情況。 異常處理使用 try、catch 和 finally 關鍵字嘗試某些操作,以處理失敗情況,盡管這些操作有可能失敗,但如果您確定需要這樣做,且希望在事后清理資源,就可以嘗試這樣做。 公共語言運行時 (CLR)、.NET Framework 或任何第三方庫或者應用程序代碼都可以生成異常。 異常是使用 throw 關鍵字創建的。
很多情況下,異常可能不是由代碼直接調用的方法引發,而是由調用堆棧中位置更靠下的另一個方法所引發。 在這種情況下,CLR 將展開堆棧,查找是否有方法包含針對該特定異常類型的 catch 塊,如果找到這樣的方法,就會執行找到的第一個這樣的 catch 塊。 如果在調用堆棧中的任何位置都沒有找到適當的 catch 塊,就會終止該進程,並向用戶顯示一條消息。
此示例中使用一個方法檢測是否有被零除的情況;如果有,則捕獲該錯誤。 如果沒有異常處理,此程序將終止並產生“DivideByZeroException 未處理”錯誤。
class ExceptionTest { static double SafeDivision(double x, double y) { if (y == 0) throw new System.DivideByZeroException(); return x / y; } static void Main() { // Input for test purposes. Change the values to see // exception handling behavior. double a = 98, b = 0; double result = 0; try { result = SafeDivision(a, b); Console.WriteLine("{0} divided by {1} = {2}", a, b, result); } catch (DivideByZeroException e) { Console.WriteLine("Attempted divide by zero."); } } }