8

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

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

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

+0

И если вы обнаружите, что он испускает 3 разных исключения из анализа исходного кода, как бы вы поместили в код для каждого из них клаузулы catch? – shahkalpesh

+1

Даже большинство инженеров java не признают, что проверенные исключения были ужасной идеей? –

+2

Я думаю, вам нужно решить проблему с остановкой, чтобы определить каждый экземпляр, где может быть поднято исключение DivideByZeroException (в отличие от тех, где инварианты класса не позволяют ему возникнуть) –

ответ

8

Единственный инструмент, который я знаю о (коммерческом) Exception Hunter from red-gate software.

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

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

Существует хорошее interview with Anders Hejlsberg об отмеченных исключениях и некоторые аргументы относительно того, почему у C# их нет - благодаря adrianbanks для ссылки.

+2

Существует хорошее интервью с Андерсом Хейлсбергом об проверенных исключениях и некоторые соображения относительно того, почему у C# их нет: http://www.artima.com/intv/handcuffs.html – adrianbanks

+0

@adrianbank, я знаю, но у меня просто не было ссылки. Спасибо, что опубликовали его! – Lucero

+0

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

2

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

Смежные вопросы