Я понимаю, что общая мудрость говорит только об использовании исключений для действительно исключительных условий (на самом деле, я видел это утверждение здесь в SO несколько раз).
Однако Кшиштоф Цвалина говорит:
Одно из самых больших заблуждений относительно исключений заключается в том, что они предназначены для "исключительных условий". Реальность такова, что они предназначены для сообщения об ошибках. С точки зрения каркасного дизайна нет такой вещи, как "исключительное условие". Независимо от того, является ли условие исключительным или не зависит от контекста использования, --- но библиотеки многократного использования редко знают, как они будут использоваться. Например, исключение OutOfMemoryException может быть исключительным для простого приложения ввода данных; его не столь исключительным для приложений, выполняющих собственное управление памятью (например, SQL-сервер). Другими словами, одно исключительное состояние - это еще одно хроническое состояние.
Далее он также говорит, что исключения должны использоваться для:
- Ошибки использования
- Ошибки программы
- Системные сбои
Учитывая, что Кшиштоф Квалина является премьер-министром для команды CLR в MS, я спрашиваю: что вы думаете о его заявлении?