Тип исключения, который не является достаточно конкретной ошибкой от StyleCop VS2010 - PullRequest
4 голосов
/ 24 мая 2011

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

if (jobFinished)
{
   ...                
} else
{                  
    throw new Exception("The server Error ...")
}

Он компилируется / запускается без проблем, но когда я запускаю StyleCop, я получаю это сообщение об ошибке, в котором говорится, что Exception не является специфическим.

Error   10  CA2201 : Microsoft.Usage : Function(string, DirectoryInfo, string, string, string, out string)' 
creates an exception of type 'Exception', an exception type that is not sufficiently 
specific and should never be raised by user code. If this exception instance might be
thrown, use a different exception type.

Я просто хочу выдать ошибку, когда сталкиваюсь с некоторыми ошибочными условиями. Как я могу сделать достаточно конкретное исключение?

Ответы [ 2 ]

5 голосов
/ 24 мая 2011

Брось InvalidOperationException.

Хотя в прошлом Microsoft не согласовывалась с обработкой исключений, вот текущие Рекомендации по обработке исключений .

В прошлом было рекомендовано создать собственное исключение и получить его из ApplicationException, но теперь вы должны получить из Exception.

Если вам не нужно различать различные типы сбоев в вашем методе, тогда InvalidOperationException будет достаточно. В противном случае реализуйте свои собственные классы исключений, которые являются производными от Exception class.

Вот рекомендации по реализации пользовательских исключений: Разработка пользовательских исключений

0 голосов
/ 24 мая 2011

Вы можете просто расширить Exception и реализовать свой собственный класс Exception. Вы можете даже оставить его пустым, если хотите просто обмануть StyleCop

public Class MyException : Exception
{
     public MyException(string errorMsg) : base(errorMessage) {}
}

Тогда

throw new MyException("blah blah");
...