C#中的异常都是从SystemException(系统异常)和ApplicationException(应用程序异常)两个类派生而来, 在自定义异常类时通常都是从ApplicationException派生,只有在开发.NETFramework的扩展类库时才考虑从SystemException派生。
在定义自己的派生异常类时通常要注意一下几点:
一:如果你的异常是需要写入文件的,如日志等,则需要将异常类声明为可序列化的[Serializable]
二:要实现一个无参数的构造函数,因为可能会抛出无参异常
三:实现一个包含message的构造函数
四:实现一个包含message,及内部异常类型参数的构造函数
五:添加自己的错误识别数据成员和处理函数
------------------YYC
[Serializable]
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());
//会显示用户加载的错误信息,如果用户有加载信息的话
}