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

С# явно определяет, какие исключения бросаются

В Java вы явно определяете, какие исключения выбрасываются с помощью ключевого слова "throws". Таким образом, любой, кто звонит вашему методу, знает, что поймать.

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

Кроме того, если я определяю интерфейс, есть ли способ сказать: "methodX() должен выкинуть это исключение при ошибке"?

4b9b3361

Ответ 1

В С# нет ничего эквивалентного: Проблема с проверенными исключениями

Кроме документации, нет способа объявить интерфейс, чтобы сказать: "methodX() должен вызывать это исключение при ошибке".

Ответ 2

С#/.NET не проверяет Исключения, они оказались менее полезными в крупномасштабных системах, чем в первую очередь. Во многих проектах время для хранения спецификаций исключений проверки было намного больше времени отладки, сохраненного при их наличии.

Проверенные исключения кажутся хорошим идеалом, пока у вас не будут методы, которые могут принимать делегаты или вызовы в объект, в который вы проходите. Простой случай, метод Sort() в списке не знает, какие исключения он будет бросать, как это делает не знаю, какие исключения будет использовать метод Compar() для сортируемых объектов.

Таким образом, спецификация для исключений, которые может вызвать метод, должна иметь возможность включать информацию о том, как заполняются исключения из прохода в объектах и ​​делегатах. Никто не знает, как это сделать!

Однако есть инструменты, которые вы проверяете, если вы ловите все исключения - см. Exception Hunter от Red Gate. Я лично не вижу большой ценности в этом инструменте, однако, если вам нравятся проверенные исключения, вы можете найти их полезными.

Ответ 3

Эта функция недоступна в С#. Вы можете сделать правильную документацию XML (3 слэша /// ) и указать, какие исключения выбрасываются.

Это будет воспринято механизмом IntelliSense и будет видимым для пользователей класса/метода до его использования.

Ответ 4

С# не поддерживает это. (Не то, что я знаю все равно). Вы можете использовать Xml-комментарии, чтобы при вызове методов эти данные будут отображаться с помощью intellisense.

Ответ 5

Насколько мне известно, в С# нет объявления throws, вы можете документировать свой метод, указывая на то, что он генерирует исключение, но без принудительной обработки ошибок.

Ответ 6

С# не поддерживает проверенные исключения. Разработчики языка рассматривают проверенные исключения в том, как java использует их плохую идею.

Некоторые обходные пути