当前位置:嗨网首页>书籍在线阅读

10-自定义异常类

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

7.3.4 自定义异常类

如果系统提供的异常类不能够与程序中的异常相匹配,就需要自定义异常类。自定义异常类的语法如下。

class 自定义异常类名:异常基类名
{
     //语句块
}
**提示** 一般从 System.Exception类或其他常见异常类派生自定义异常类。异常类名称通常以Exception 结尾,如NewException、MyException等。

一般要在自定义异常类中定义3个构造函数,一个是默认构造函数,一个用来设置消息属性,一个用来设置 Message 属性和 InnerException 属性,这三个构造函数可以从异常基类继承。自定义异常类时,也可以添加新的属性,但仅当新属性提供的数据有助于解决异常时,才将其添加到异常类。

【范例7-4】 自定义一个新的异常类TestException。

(1)在Program.cs中添加自定义异常类CustomException代码,代码如下。

01  public class TestException : Exception
02  {
03          public TestException() : base()               //继承基类的无参构造函数
04          {  }
05          public TestException(string msg): base(msg)   //继承基类有一个参数的构造函数
06          {  }
07          public TestException(string msg, Exception inner) : base(msg, inner)
08          {  }        //继承基类的有两个参数的构造函数 
09  }

(2)在Program.cs的Main方法中添加以下代码。

01  Console.WriteLine("请输入整数");        //提示输入整数
02  try
03  {
04          int x = int.Parse(Console.ReadLine());
05          if ((x / 2) * 2 == x)
06                  throw new TestException("输入的是偶数!");
07          else
08                  throw new TestException("输入的是奇数!");
09  }
10  catch (TestException e)
11  {
12          Console.WriteLine(e.Message);
13  }
14  Console.ReadKey();

程序执行结果如下图所示。

【范例分析】

自定义异常类比较简单,自定义异常类的使用方法与C#提供的异常类相同。本例在步骤(1)中定义了一个异常类,在步骤(2)中使用了try…catch结构来捕获自定义异常并处理。