c# - 是否可以向异常添加错误代码?

标签 c# .net exception

要抛出异常,那一刻我用的是这种方式吗?

throw new ArgumentException("My message");

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

我知道我可以用掉它:

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

但是如果同一个参数可能有很多原因抛出 ArgumentException,那么这种情况就无济于事了。例如,我在一个方法中有一个参数有两个属性,一个需要大于 0,另一个小于 0。我想发送一个错误代码,当第一个参数不大于 0 和 002 时发送 001当第二个参数不小于0时。这样。但是我不知道是否可以在异常中设置一个错误代码。

我可以这样使用:

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

在消息的末尾,我可以添加错误代码,但我必须搜索子字符串 (001)。但我想知道是否有更好的选择。

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

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

谢谢。

最佳答案

您可以使用 ErrorCode 编写自己的 ArgumentException 覆盖:

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

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

关于c# - 是否可以向异常添加错误代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42038376/

相关文章:

c# - .net 无法加载文件或程序集 MySql.Data。强名称验证失败 (0x8013141A)

c# - 从我的服务中将异常抛回给客户是否可以?

c# - 将 System.Collections.Generic.SortedList<string,T> 转换为 IEnumerable<T>

c# - 在不同的程序集中运行测试

c# - HTTP PATCH 方法 C#

.net - 如何将边框样式应用于 NPOI 工作簿单元格

iphone - objective-c : UIColor * exception 'NSInvalidArgumentException?

c# - 将 Func<T1, T2> 作为参数传递时,方法未被正确调用

c# - 使用 itextsharp c# 在现有 PDF 上绘制圆圈

c# - StringComparison,为什么 "TH"不是以 "T"开头