Как узнать, какие исключения могут быть вызваны функцией .NET? - PullRequest
10 голосов
/ 12 октября 2008

Возможно, я упускаю что-то очевидное, но есть ли где-нибудь ссылка о том, какие исключения генерируются функциями в .NET и почему может генерироваться исключение?

В качестве примера, я недавно пробовал Linq в Visual C # 2008 и загружал файл XML в XDocument. Только после тестирования я понял, что если вы попытаетесь загрузить файл, который не существует, он вызовет исключение FileNotFound, но если вы попытаетесь загрузить каталог вместо файла, вы получите исключение UnauthorizedAccessException. Также, просматривая пространство имен System.IO, я вижу такие вещи, как исключение FileLoad и PathTooLongException, и могу догадаться, когда они могут быть выброшены, но могут быть и другие, которые могут быть выброшены в некоторых обстоятельствах, о которых я еще не думал ,

Единственное решение, которое у меня есть сейчас, это просто поймать те, о которых я знаю, а затем поймать тип Исключения, но я предпочел бы точно знать, с какими типами исключений я, скорее всего, столкнусь, и Зачем. Я бы подумал, что в библиотеке MSDN будет такая информация, но я нигде не могу ее найти. Я просто слепой? Эта информация где-нибудь еще?

РЕДАКТИРОВАТЬ: некоторые дополнительные особенности, сейчас я ищу исключения, которые могут быть вызваны функцией XDocument.Load (string). Похоже, что нет ничего релевантного в онлайн-документации или браузере объектов. Теперь мне нужно просто запустить несколько тестов и посмотреть, к чему я иду?

Ответы [ 3 ]

8 голосов
/ 12 октября 2008

Хороший вопрос, у вас зрение 20/20. C # /. NET не реализует оператор throws (то есть проверенные исключения).

Любой, кто приезжает с языка, такого как Java, может задаться вопросом об этом.

Андерс Хейлсберг, отец C #, объясняет причину исключения проверенных исключений из C # в этой статье / интервью . Это хорошее чтение.

Из этой статьи Андерс говорит:

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

Итак, как сказали Митч и Окись, в документации MSDN для .NET FCL перечислены исключения, относящиеся к каждому классу, а также возможные исключения в каждом пространстве имен.

2 голосов
/ 12 октября 2008

Если функция выдает исключение, оно обычно отображается в нижней части автономной справочной страницы или в Обозревателе объектов. Он также указан под информацией о том, как вызывать функции в онлайн-библиотеке MSDN, , например, string.Contains () , он помечен как «Исключения».

Кроме того, только функции, свойства и т. Д. На самом деле генерируют исключения, поэтому эти вещи не рассматриваются в общей документации, только в документации по функциям или методам доступа, которые на самом деле их генерируют, как в приведенном примере. , Лучше всего пообщаться в браузере объектов в VS с интересующими вас классами.

1 голос
/ 12 октября 2008

.NET не реализует ничего похожего на ключевое слово throws в java, поэтому лучше всего проверить онлайн документацию MSDN.

РЕДАКТИРОВАТЬ: если вы посмотрите на doco пространства имен (например, для System.IO ), в нем перечислены возможные исключения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...