Выяснение того, какие исключения может вызвать метод в C#
Есть ли способ узнать, какие исключения могут быть вызваны любым методом в коде.NET? В идеале я хочу посмотреть, что можно бросить, и выбрать, какие из них я хочу обработать. Думаю, я хочу получить информацию, которую вы получите из предложения throws в Java.
Ситуация такова, что я делаю запрос linq для xml-документа из сети и хочу узнать, что может пойти не так. Я мог бы открыть сборку в отражателе и посмотреть, но я подумал, что может быть проще.
4 ответа
.NET не имеет принудительных ("проверенных") исключений, таких как Java. Intellisense может показать эту информацию, если разработчик добавил /// <exception.../>
блок - но в конечном итоге может произойти больше исключений, чем вы ожидаете (OutOfMemoryException
, ThreadAbortException
, TypeLoadException
и т. д. все может произойти довольно непредсказуемо).
В общем, вы должны иметь представление о том, какие вещи могут пойти не так, и какие из них вы можете сделать что-то полезное. В большинстве случаев правильное поведение - позволить исключению всплыть (просто запустив любой код "наконец" для освобождения ресурсов).
Эрик Липперт имеет хороший блог на эту тему здесь.
Я думаю, что Охотник за исключениями может предоставить эту информацию, однако это стоит денег...
Прочитав еще одну статью об этом в Stackru, я основал этот ответ, чтобы написать инструмент для этого, вы можете получить исходный код из GitHub здесь:
Вы также можете прочитать больше здесь:
Пока вы используете классы BCL, они все полностью документированы, и поэтому Intellisense отображает любое исключение, которое может вызвать метод. Кроме этого (и чтения документов), я думаю, что нет никакого пути.