Подтвердить что ты не робот

Выяснение, какие исключения может использовать метод С#

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

Ответ 3

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

Исключительный рефлектор

вы также можете прочитать здесь:

http://steves-rv-travels.com/archives/167

Ответ 4

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