雖然在 C# 語言中已經提供了很多異常處理類,但在實際編程中還是會遇到未涉及的一些異常處理。
例如想將數據的驗證放置到異常處理中,即判斷所輸入的年齡必須為 18〜45,此時需要自定義異常類來實現。
自定義異常類必須要繼承 Exception 類。
聲明異常的語句如下。
class 異常類名 :Exception
{
}
拋出自己的異常,語句如下
throw( 異常類名 );
下面通過實例來演示自定義異常的應用。
【實例】自定義異常類,判斷從文本框中輸入的年齡值處於 18〜45。
根據題目要求,設計一個 Windows 窗體,界面如下圖所示。

編寫自定義異常類,代碼如下。
- class MyException :Exception
- {
- public MyException(string message) : base(message)
- {
- }
- }
在“驗證”按鈕的單擊事件中根據輸入的年齡判斷是否拋出自定義異常,代碼如下。
- private void button1_Click(object sender, EventArgs e)
- {
- try
- {
- int age = int.Parse(textBox1.Text);
- if (age < 18 || age > 45)
- {
- throw new MyException("年齡必須在18~45歲之間!");
- }
- else
- {
- MessageBox.Show("輸入的年齡正確!");
- }
- }
- catch(MyException myException)
- {
- MessageBox.Show(myException.Message);
- }
- catch(Exception ex)
- {
- MessageBox.Show(ex.Message);
- }
- }
運行該窗體,若在窗體上輸入不符合要求的年齡,效果如下圖所示。

從運行效果可以看出,若在文本框中輸入的年齡不在 18〜45 歲即會拋出自定的異常。
自定義異常也繼承自 Exception 類,因此如果不直接處理 MyException 異常,也可以直接使用 Exception 類來處理該異常。