Создайте пользовательское исключение, используя C # - PullRequest
2 голосов
/ 13 марта 2012

Я пытаюсь переопределить класс System.Exception своим собственным классом исключений.Я хотел бы добавить параметр "код".

Я хотел бы сделать это:

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 »...».Что я делаю не так?

Ответы [ 2 ]

2 голосов
/ 13 марта 2012

Я протестировал ваш код, класс исключений правильный, но выгода неверна. Мой тестовый код такой.

        catch (MyException ex)
        {
            Console.WriteLine(ex.ErrorCode);
        }
0 голосов
/ 13 марта 2012

Это потому, что это ErrorCode, а не Code.
Кроме того, сделайте это свойство общедоступным только для чтения.

РЕДАКТИРОВАТЬ:

catch (MyException e) {
    Console.WriteLine(e.ErrorCode)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...