C#中的异常都是从SystemException(系统异常)和ApplicationException(应用程序异常)两个类派生而来, 在自定义异常类时通常都是从ApplicationException派生,只有在开发.NETFramework的扩展类库时才考虑从SystemException派生。
在定义自己的派生异常类时通常要注意一下几点:
一:如果你的异常是需要写入文件的,如日志等,则需要将异常类声明为可序列化的[Serializable]
二:要实现一个无参数的构造函数,因为可能会抛出无参异常
三:实现一个包含message的构造函数
四:实现一个包含message,及内部异常类型参数的构造函数
五:添加自己的错误识别数据成员和处理函数
class MyException : ApplicationException { private int a; public MyException() { a = 0; } public MyException(string message,int b) : base(message) { a = b; } public MyException(string message, Exception inner,int b) : base(message, inner) { a = b; } public int GetInt() { return a; } } try { int a = 1; if (a == 1) { throw new MyException("YYC",2); // throw new MyException(); //此处的“YYC”字符串是加载在EXception异常对象的Message中 } } catch (MyException ex) { MessageBox.Show(ex.Message+ex.GetInt().ToString()); //会显示用户加载的错误信息,如果用户有加载信息的话 } |