Перечислите все исключения, которые могли быть выданы методом

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

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

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

8
задан Mechanical snail 4 December 2012 в 07:02
поделиться

2 ответа

Единственный известный мне инструмент - это (коммерческий) Exception Hunter из программы Red-Gate .

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

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

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

8
ответ дан 5 December 2019 в 17:35
поделиться

Единственное, что я обнаружил, это Exception Hunter , но это коммерческий инструмент, который вам придется купить.

2
ответ дан 5 December 2019 в 17:35
поделиться