C# try-catch異常捕獲與throw自定義異常 例子


題目:編寫控制台程序,輸入兩個整數將其整除,並使用 try-catch 語句捕獲除數為 0 的異常, 並輸出異常消息

代碼1:

 1 static void Main(string[] args)
 2         {
 3             Console.Write("請輸入兩個整數,使用\',\'隔開: ");
 4             string[] num = Console.ReadLine().Split(",");
 5             float a = float.Parse(num[0]);
 6             float b = float.Parse(num[1]);//這里也要有一個顯示類型轉換,如果要得到數學商的話就轉換成浮點型
 7 
 8             try
 9             {
10                 float quotient = a / b;
11                 Console.WriteLine(quotient);
12             }
13             catch(Exception ee)
14             {
15                 Console.WriteLine(ee);
16             }
17             Console.ReadKey();
18         }

 

 會發現沒有拋出異常,而是輸出了無窮大--a,b是float的原因(語法)

代碼2:

 1  Console.Write("請輸入兩個整數,使用\',\'隔開: ");
 2             string[] num = Console.ReadLine().Split(",");
 3             int a = int.Parse(num[0]);
 4             int b = int.Parse(num[1]);//這里也要有一個顯示類型轉換,如果要得到數學商的話就轉換成浮點型
 5 
 6             try
 7             {
 8                 int quotient = a / b;
 9                 Console.WriteLine(quotient);
10             }
11             catch (Exception ee)
12             {
13                 Console.WriteLine(ee);
14             }
15             Console.ReadKey();

別的不變,僅將a,b改為int型(當然顯式類型轉換也要改),重新編譯運行:

 

 成功拋出異常

新的問題又出現了:如果我既要拋出異常,又要是用除法算出小數點的話該怎么做呢?---自定義異常

自定義異常類必須要繼承 Exception 類。

聲明異常的語句如下。

 class 異常類名 :Exception

{

} 

拋出自己的異常,語句如下

throw( 異常類名 );
class MyException :Exception
{
    public MyException(string message) : base(message)
    {
    }
}

 代碼3:

 1 namespace 自定義異常_throw拋出
 2 {
 3     class MyException : Exception //子類MyException繼承自父類Exception
 4     {
 5         public MyException(string message) : base(message)
 6         {
 7         }
 8     }
 9     class Program
10     {
11         static void Main(string[] args)
12         {
13             Console.Write("請輸入兩個整數,使用\',\'隔開: ");
14             string[] num = Console.ReadLine().Split(",");
15             float a = float.Parse(num[0]);
16             float b = float.Parse(num[1]);//這里也要有一個顯示類型轉換,如果要得到數學商的話就轉換成浮點型
17 
18             try
19             {
20                 if(b==0)
21                 {
22                     throw new MyException("除數不能為0!");
23                 }
24                 float quotient = a / b;
25                 Console.WriteLine(quotient);
26             }
27             catch (Exception ex)
28             {
29                 Console.WriteLine(ex);
30             }
31             Console.ReadKey();
32         }
33     }
34 }

 

 參考資料:http://c.biancheng.net/view/2987.html


免責聲明!

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



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