為了捕捉異常,代碼要放到一個 try 塊中(try 是 C# 關鍵字)。代碼運行時它會嘗試執行 try 塊內的所有語句。如果沒有任何語句產生一個異常,這些語句將一個接一個運行,直到全部完成。然而,一旦出現異常,就會跳出 try 塊,並進入一個 catch 處理程序中執行。
在try塊后緊接着寫一個或多個 catch 處理程序(catch 也是 C# 關鍵字),用它們處理任何發生的錯誤。每個 catch 處理程序都負責捕捉並處理一種特定類型的異常,你可以在一個 try 塊后面寫多個 catch 處理程序。try 塊中的任何一個語句造成錯誤,“運行時”(runtime)都會生成並拋出一個異常。然后“運行時”將檢查 try 塊之后的 catch 處理程序,將控制權移交給一個匹配的處理程序。
catch 處理程序結束之后,程序將從處理程序之后的第一個語句繼續執行。
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace TryAndCatch 7 { 8 class Program 9 { 10 static void Main(string[] args) 11 { 12 try 13 { 14 int a; 15 string b; 16 17 Console.WriteLine("請輸入一個整數: "); 18 b = Console.ReadLine(); // ReadLine() 獲取到的是 string 類型的數據 19 a = int.Parse(b); // int.Parse 方法將 string 類型轉換 int 類型 20 } 21 22 catch (Exception ex) // 這是一個常規的 catch 處理程序,能捕捉一切異常 23 { 24 Console.WriteLine(ex); 25 } 26 } 27 } 28 }
由於 a 是 int 類型,所以要求輸入的數據也要是 int 類型。此處輸入 1.0,類型不符合,所以 try 塊在此處會捕捉到一個 FornatException ( 格式異常 ),然后 catch 塊會處理這個異常,在這里具體的做法就是輸出錯誤信息。
FornatException 屬於 Exception。
運行后結果如下圖所示:
將 try 和 catch 注釋掉后代碼如下:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace TryAndCatch 7 { 8 class Program 9 { 10 static void Main(string[] args) 11 { 12 ////try 13 ////{ 14 int a; 15 string b; 16 17 Console.WriteLine("請輸入一個整數: "); 18 b = Console.ReadLine(); 19 a = int.Parse(b); 20 ////} 21 22 ////catch (Exception ex) 23 ////{ 24 //// Console.WriteLine(ex); 25 ////} 26 } 27 } 28 }
由於沒有進行異常捕捉和異常處理,所以運行后結果如下: