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

С#: Есть ли в Visual Studio 2008 инструмент, показывающий, какие Исключения могут быть подняты куском кода?

Например, если я открываю файл, я знаю, что может произойти событие FileNotFoundException, или если я преобразую String в double, может возникнуть исключение FormatException. Очевидно, что если метод делает оба, оба могут быть подняты.

Есть ли способ быстро увидеть все возможные исключения, вызванные методом? Отслеживание этого само по себе кажется склонным к ошибкам.

4b9b3361

Ответ 1

Он не встроен в VS. Есть сторонние инструменты, хотя, как Redgate's, охотник за исключением.

Изменить Я не работаю RG, но я поклонник их продуктов. Я пробовал этот конкретный, но мы не купили его.

Ответ 2

Если память служит мне правильно, если подсказка для инструмента Intellisense должна иметь список исключений, которые может использовать метод. Вы также можете открыть вкладку браузера в visual studio, указывающую на MSDN следующим образом: http://msdn.microsoft.com/en-us/library/b9skfh7s.aspx#ddueExceptionsToggle

Ответ 4

Я думаю, что Resharper делает это, если моя память правильно работает. Посмотрите Pex, это может вас заинтересовать.

Ответ 5

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

Также некоторые исключения - хорошие вещи. Некоторые из самых трудных и больших ошибок при ударе, которые я когда-либо встречал, объясняются тем, что разработчики обрабатывают ошибки таким образом, что программа продолжается, но больше не находится в состоянии, которое ожидает любой будущий код. просто мой .02