关于扩展Exception,实现自定义异常抛出...
我在写一个让第三方调我方数据库的接口,打算用类把数据库的操作封装好.
我的业务层涉及到人员的增加与删除,比如增加一名人员我就向数据库Insert一条记录
但第三方开发人员只能通过我的类方法来增加.
这样有一个问题,如果在操作过程中产生异常,则系统抛出异常会让第三方人员看不懂.
比如某某存储过程有错,某某表违反了主键约束.
所以我又想在我的类中抛出让他们看得懂的异常,比如用"该名人员的编号已被占用"来代替违反了主键约束.
所以自己扩展Exception类,并加了个自己定义的errorsNumber成员,该成员为自己定义的错误代码.
这样我将开发文档给第三方时,同时附上一份将有可能被抛出的异常的字典.不知这样做可不可行,以下是字典和代码:
字典:
代码 Message 详细
--------------------------
101 该名人员的编号已被占用 该人员编号已在数据库中存在
102 该名人员尚有任务在身,不能删除 要删除该人员请先删除所属该人员所有待执行的任务
自定义异常类:
class MyException:System.Exception
{
public MyException() : base() { }
public MyException(string message):base(message){}
public MyException(string message,Exception innerException):base(message,innerException){}
public MyException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) : base(info, context) { }
public MyException(string message,int errNumber){
this.errorsNumber = errNumber;
this.strMessage = message;
}
public override string Message
{
get
{
if (strMessage == string.Empty)
{
return base.Message;
}
else
{
return strMessage;
}
}
}
private string strMessage=string.Empty;
public int errorsNumber ;
}
使用:
private void button1_Click(object sender, EventArgs e)
{
try
{
throw new MyException("该名人员的编号已被占用", 123);
}
catch (MyException er) {
if (er.errorsNumber == 123) {
//处理
}
}
}