ОШИБКА РАЗРАБОТЧИКА (нужно перехватить либо на 2 либо на 3)
IlleagalStateException (в C# InvalidOperationException) -- самое общее. Применяется когда состояние объекта теоретически не может быть таким, каким уже оказалось/может оказаться.
Методы вызваны в неправильной последовательности: WorkflowException
Более уточняющее WorkflowException: не вызван метод инициализации (когда нет конструктора у класса, иначе не нужно): InitializationException
Ошибка конфигурации (не ожидаем)
ОШИБКА СИС-АДМИНА
ConfigurationException
Исключение утилиты (ожидаем)
НУЖНО ОБРАБОТАТЬ
См. слой утилит. Вводить специальные исключения (кроме простых случаев, когда проблема в аргументе).
5.7. Исключение бизнес-процесса (ожидаем!!!)
ОШИБКА ПОЛЬЗОВАТЕЛЯ
Когда что-то идет в разрез с нашим практическим бизнес-процессом.
-BusinessException
Системные исключения
ОШИБКА СИСТЕМЫ
Сбой в работе оборудования или низкоуровневые сбои.
XML-комментарии
Каждый класс необходимо сопровождать XML-комментариями, описывающими поведение класса. Методы сопровождать комментариями лишь в сложных случаях (из названия метода не понятно, что он делает).
Отсутствие дублирования кода