是否有可能将错误代码添加到异常?

问题描述:

要抛出一个异常,到目前为止我使用这种方式?是否有可能将错误代码添加到异常?

throw new ArgumentException("My message"); 

但是,如果一个方法可以抛出一个ArgumentException由于很多原因,我想知道异常的确切原因。

我知道,我可以用这个远:

throw new ArgumentException("MyParamName", "MyMessage"); 

但这种情况并不能帮助这么多,如果同样的参数可以有很多理由抛出ArgumentException的。例如,我有两个属性的方法中的参数,一个需要大于0,另一个小于0.我想发送一个错误代码,001当第一个参数不大于0和002当第二个参数不小于0.这样。但我不知道是否可以在异常中设置错误代码。

我可以用这样的方式:

throw new ArgumentException("My message " + "(001)"); 

在我可以添加错误代码的消息的结束,但我不得不搜索字符串(001)。但我想知道是否会有更好的选择。

另一种方式可以创建我自己的异常,但如果我有一个ArgumentException,我认为创建一个新的异常只有一个属性的错误代码,并包含原始异常,它是很少的开销。

所以我的问题是,什么是最好的选择?还有其他解决方案吗?

谢谢。

你可以用错误代码编写自己的ArgumentException的覆盖:

public class ArgumentExceptionEx : ArgumentException 
{ 
    public int ErrorCode { get; } 
    public ArgumentExceptionEx(string paramName, int errorCode) 
     : base (paramName)  
    { 
     ErrorCode = errorCode; 
    } 
} 

后,你可以抛出新ArgumentExceptionEx ("MyParamName", 1) 或者你cuold甚至使枚举你的第二个参数,如果你有错误代码的预定量。

+0

想到了同样的建议 – Saravanan