C# 中的異常捕捉(try)和異常處理(catch)


轉載自:https://blog.csdn.net/seattle1215/article/details/6660777?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

為了捕捉異常,代碼要放到一個 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 }

由於沒有進行異常捕捉和異常處理,所以運行后結果如下:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM