C# 使用C创建自定义异常#

C# 使用C创建自定义异常#,c#,exception,C#,Exception,我试图用我自己的异常类重写System.Exception类。我想添加参数“code” 我想这样做: throw new MyException(code, "message"); 然后使用以下方法捕获异常: catch (MyException e) { Console.WriteLine(e.code) } 更新:问题是我需要将异常捕获为“(MyException e)”而不是“(exception e)” 这是我目前的代码: public class MyException :

我试图用我自己的异常类重写System.Exception类。我想添加参数“code”

我想这样做:

throw new MyException(code, "message");
然后使用以下方法捕获异常:

catch (MyException e) {
    Console.WriteLine(e.code)
}
更新:问题是我需要将异常捕获为“(MyException e)”而不是“(exception e)”

这是我目前的代码:

public class MyException : System.Exception
{
    public String ErrorCode = "";

    public MyException() : base()
    {
    }

    public MyException(string message, string code) : base(message)
    {
        this.ErrorCode = code;
    }
    public MyException(string message, Exception inner, string code) : base(message, inner)
    {
        this.ErrorCode = code;
    }
}

这给了我一个错误,“System.Exception不包含'ErrorCode'…”的定义。我做错了什么?

那是因为它是
ErrorCode
而不是
code

另外,将其设置为公共只读属性

编辑:


我已经测试了你的代码,异常类是正确的,但是捕获错误。我的测试代码是这样的

        catch (MyException ex)
        {
            Console.WriteLine(ex.ErrorCode);
        }

我的猜测是,您意外地使用了
catch(异常e)
而不是
catch(MyException e)
实际上是Rob,类本身编译得很好。OT:您在调用中交换参数。Tom:确定行并确保发布产生错误的确切代码。错误消息指出缺少
ErrorCode
。@svick:请查看已接受的答案。当我投反对票时,请帮我理解原因。谢谢。我认为你的答案实际上并没有回答这个问题,因为这不是问题所在。当然,正确回答这样的问题需要一个水晶球,这就是为什么我没有投你的反对票。@svick:谢谢你没有投反对票。除了OP粘贴的错误代码之外,您认为问题出在哪里?如果问题是错误的,则应将其删除。不是吗?OP在问题的更新中说,问题是捕获
异常
而不是
MyException
。我想你是对的,这个问题应该被删除,这就是为什么我已经投票决定关闭它。谢谢,事实上,我试图把这个错误看作是“例外”而不是“MyException”
        catch (MyException ex)
        {
            Console.WriteLine(ex.ErrorCode);
        }