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结构来捕获自定义异常并处理。
**提示**
一般从 System.Exception类或其他常见异常类派生自定义异常类。异常类名称通常以Exception 结尾,如NewException、MyException等。