Как я могу расширить исключения, чтобы вернуть указанный код ошибки вместе с обычным сообщением? - PullRequest
1 голос
/ 02 января 2012

Когда я выбрасываю или ловлю какое-либо исключение, я хотел бы указать код ошибки вместе с ним, чтобы иметь возможность сделать что-то вроде следующего:

Writeline(ex.Source + ex.Message + ex.Code);

Можете ли вы показать мне путь или предложить что-то?

спасибо всем.

Ответы [ 2 ]

2 голосов
/ 02 января 2012

У вас есть два варианта:

1) Если вы создаете свое собственное исключение, вы можете наследовать от класса исключения и добавлять любые свойства, которые вам нужны.

2) Вы можете добавитьпары имя / значение в словаре Data любого исключения.

Из документации MSDN добавить информацию в Data:

   try
   {
       // do something
   }
   catch (Exception e)
   {
        e.Data["ExtraInfo"] = "Information from NestedRoutine1.";
        e.Data.Add("MoreExtraInfo", "More information from NestedRoutine1.");
        throw e;
   }

и использовать эту информацию:

        if (e.Data != null)
        {
            Console.WriteLine("  Extra details:");
            foreach (DictionaryEntry de in e.Data)
                Console.WriteLine("    The key is '{0}' and the value is: {1}", de.Key, de.Value);
        }
1 голос
/ 02 января 2012

Класс Exception определяет словарь ключ / значение для любых пользовательских данных, которые необходимо сохранить в экземпляре Exception - см. Свойство Exception.Data.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...