【问题标题】:Is it possible to add an error code to an exception?是否可以将错误代码添加到异常中?
【发布时间】:2017-02-04 08:50:08
【问题描述】:

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

throw new ArgumentException("My message");

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

我知道我可以把它用掉:

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

但是,如果同一个参数可能有很多原因引发 ArgumentException,那么这种情况并没有太大帮助。比如我在一个方法中有一个参数,有两个属性,一个要大于0,一个要小于0。我想发一个错误码,第一个参数不大于0的时候是001和002当第二个参数不小于0时。这样。但是不知道能不能在异常中设置错误码。

我可以这样用:

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

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

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

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

谢谢。

【问题讨论】:

    标签: c# .net exception exception-handling


    【解决方案1】:

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

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

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

    【讨论】:

    • 想到了同样的建议
    猜你喜欢
    • 2017-11-02
    • 1970-01-01
    • 2021-01-12
    • 2015-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-02
    • 1970-01-01
    相关资源
    最近更新 更多