Как сказать, какие исключения создает вызовы .NET? - PullRequest
1 голос
/ 17 марта 2012

Если есть следующий код:

data.SaveChanges();

(данные ObjectContext)

В MSDN doc указан OptimisticConcurrencyException как выброшенный. Это хорошо, но я знаю, что UpdateException также может быть брошено (и, возможно, другие тоже). Как я могу узнать, какие исключения может вызвать метод?

Я не хочу ловить Exception, поскольку я хочу ловить только исключения, которые, как я знаю, я могу обработать каким-либо образом. Это вообще говоря - не только для примера выше. Должен быть какой-то способ узнать, какое исключение выдает «встроенный» метод .NET.

Ответы [ 2 ]

5 голосов
/ 17 марта 2012

Это не «нативный» метод; это обычный метод, который пишется не вами, а Майкрософт.
Реальные собственные методы не могут генерировать управляемые исключения (хотя COM-взаимодействие преобразует вещи в управляемые исключения)

В отличие от Java, C # не имеет спецификаций исключений, поэтому нет никакого способа узнать, какие исключения вызовет метод.

Ваши единственные опции - это документация или декомпилятор.

0 голосов
/ 17 марта 2012

На всякий случай (извините, если это очевидно, но есть парни, которые этого не знают), вы можете навести указатель мыши на имя класса / вызов метода в представлении редактора в VS. Он показывает все исключения, которые могут быть сгенерированы методом, если они определены в документации.

...