Не бросайте System.Exception
. Когда-либо.
Проблема с ним заключается в коде вызова. Плохая практика - ловить общий объект Exception
по многим причинам. Если вы выбросите экземпляр базового класса Exception
, то у вызывающего кода не останется иного выбора, кроме как перехватить Exception
, если они захотят его обработать. Это заставляет вызывающий код использовать плохую практику.
Кроме того, вызывающий код не имеет надежных средств для определения того, что было исключением, если все, что он получает, это Exception
.
Обычно лучше использовать одно из предопределенных исключений, если применимо (ArgumentException
, InvalidOperationException
и т. Д.). Если ни один из них не описывает ситуацию должным образом, тогда вполне подойдет класс пользовательских исключений.