Перечислите все исключения, которые могут быть вызваны методом - PullRequest
8 голосов
/ 06 апреля 2010

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

.NET нас другой стороны, такой функции нет, и все, что у нас осталось, - это документация API или документация XML, в которой перечислены исключения , иногда .

Есть ли дополнения для VS, показывающие, какие исключениякакой-то конкретный звонок может скинуть?Учитывая силу отражения, разве не должно быть возможно просмотреть вызов, просмотреть все ветви возможных прогонов вызова и проверить наличие любых исключений .NET?

Ответы [ 2 ]

8 голосов
/ 06 апреля 2010

Единственный известный мне инструмент - это (коммерческий) Исключительный охотник из программного обеспечения Red-Gate .

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

В Java у вас есть «специальное» RuntimeException, которое не нужно объявлять в сигнатуре метода (включая все исключения, происходящие из него). Есть веские причины, разработчики языка решили не реализовывать проверенные исключения в C # (перевешивают ли они преимущества или нет, является спорным). Некоторые разработчики Java просто заключают исключения в исключения во время выполнения или забывают использовать исключения «причина», что приводит к потере информации.

Есть хорошее интервью с Андерсом Хейлсбергом о проверенных исключениях и некоторых рассуждениях о том, почему в C # их нет - Спасибо Adrianbanks за ссылку.

2 голосов
/ 06 апреля 2010

Единственное, с чем я столкнулся, это Охотник за исключениями , но это коммерческий инструмент, который вам придется купить.

...