Выяснение того, какие исключения может вызвать метод в C # - PullRequest
43 голосов
/ 05 ноября 2008

Есть ли способ узнать, какие исключения могут быть вызваны любым методом в коде .NET? В идеале я хочу посмотреть, что можно бросить, и выбрать, какие из них я хочу обработать. Думаю, я хочу получить информацию, которую вы получите из предложения throws в Java.

Ситуация такова, что я делаю запрос linq для xml-документа из сети и хочу узнать, что может пойти не так. Я мог бы открыть сборку в отражателе и посмотреть, но я подумал, что может быть проще.

Ответы [ 4 ]

42 голосов
/ 05 ноября 2008

.NET не имеет принудительных («проверенных») исключений, таких как Java. Intellisense может показывать эту информацию, если разработчик добавил блок /// <exception.../> - но в конечном итоге может произойти больше исключений, чем вы ожидаете (OutOfMemoryException, ThreadAbortException, TypeLoadException и т. Д. Все может произойти довольно непредсказуемо).

В общем, вы должны иметь представление о том, какие вещи могут пойти не так, и какие из них вы действительно можете сделать что-то полезное. В большинстве случаев правильное поведение заключается в том, чтобы исключение всплыло (просто запустив любой код "finally" для освобождения ресурсов).

Эрик Липперт ведет хороший блог на эту тему здесь .

8 голосов
/ 05 ноября 2008

Я думаю, что Искатель исключений может предоставить эту информацию, однако это стоит денег ...

1 голос
/ 31 декабря 2012

Прочитав еще одну статью об этом в StackOverflow, я основал этот ответ, чтобы написать инструмент для этого, вы можете получить исходный код из GitHub здесь:

Отражатель исключения

Вы также можете прочитать больше здесь:

http://steves -rv-travels.com / архив / 167

0 голосов
/ 05 ноября 2008

Пока вы используете классы BCL, они все полностью документированы, и поэтому Intellisense отображает любое исключение, которое может вызвать метод. Кроме этого (и чтения документов), я думаю, что нет никакого пути.

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