Как создать исключение, которое не наследуется от Exception? - PullRequest
0 голосов
/ 26 октября 2009

Я хотел бы проверить некоторую логику обработки исключений в пустом блоке перехвата кода ниже.

try
{
    //Do Some stuff that throws a exception 
    //This is the code i need
}
catch (Exception)
{
    //Handle things that inherits from Exception
}
catch
{
    //Handle things that dont inherits from Exception
    //Want to test this code
}

Ответы [ 2 ]

13 голосов
/ 26 октября 2009

Начиная с CLR 2.0, это не тот сценарий, о котором вам нужно беспокоиться. CLR теперь автоматически обернет все исключения, которые не являются производными от System.Exception, с новым исключением типа RuntimeWrappedException ( Документация ).

Эта упаковка может быть отключена путем включения уровня совместимости приложений, но это, конечно, не обычный или обычный случай

5 голосов
/ 26 октября 2009

Вы не можете написать код, который выдает исключение в C #. Вам нужно написать его в IL (и скомпилировать с использованием ILASM) или C ++ / CLI.

Но, честно говоря, я не стал бы беспокоиться об этом сценарии. Возможность генерировать не-исключения не используется в фреймворке, и я сомневаюсь, что он используется во многих сторонних кодах. Я хотел бы решить эту проблему только в том случае, если вы используете библиотеку, которую вы знаете, выдает не-исключения.

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