Есть ли в Visual Studio параметр для выдачи предупреждения или ошибки при использовании метода, который может создавать необработанные исключения? - PullRequest
0 голосов
/ 25 июня 2010

В основном на работе я обычно сталкиваюсь с кодом вроде:

double pricediff = 0.0;
if(!string.IsNullOrEmpty(someVariable.ToString()))
    pricediff = Convert.ToDouble(someVariable);

Вместо чего-то вроде:

double pricediff = 0.0;
Double.TryParse(someVariable, out pricediff);

Есть ли в Visual Studio параметр, который может выдавать предупреждение всякий раз, когдаиспользуется такой метод, как Convert.Double, который может вызвать исключение, и метод не содержится в блоке try{}?

1 Ответ

2 голосов
/ 25 июня 2010

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

  1. StackOverflowException
  2. OutOfMemoryException

Добавьте к этому гораздо более вероятный NullReferenceException, и, по сути, каждый метод будет помечен как "Can throw"

Было бы разумно создать функцию, которая помечает явные исключения. VS не имеет этой функции, но R # (IIRC). Однако даже это не является надежным, потому что вы не можете видеть сквозь интерфейсы.

interface IExample { 
  void Method(); 
}
class Class1 : IExample() {
  void Method() { throw new Exception(); }
}
class Class2 : IExample() {
  void Method() {}
}

...
IExample v1 = ...;
v1.Method();

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

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