Цель внедрения зависимостей состоит в том, чтобы инвертировать ответственность за получение зависимостей, которые являются соавторами, используемыми объектом для облегчения конфигурации или совместного поведения.
Как правило, исключения присущи договору данного класса. То есть исключения являются частью неявного или явного договора о том, как компонент ведет себя в случае сбоя, и, следовательно, не допускает переключения с производными. События также обычно не имеют поведения, поэтому абстрагирование их с целью изоляции теста также не представляет особой ценности. Кроме того, поскольку события, как правило, представляют только состояние отказа или событие, возможность вставлять производные исключения также не представляет особой ценности, так как любые потребители компонента должны будут кодировать в соответствии с базовым контрактом исключения (то есть любые дополнительные свойства не будут быть увиденным).
Существует , возможно, несколько законных причин, по которым вы можете захотеть внедрить исключение, например, при разработке компонента обработки исключений, который перебрасывает исключения после записи в журнал, переноса и т. Д., Или, возможно, при создании само по себе исключение требует внешних ресурсов для достижения (хотя эта потребность сама по себе заставит меня задуматься), но в целом я бы не сказал, что вы должны отделить то, как компонент сообщает о своих состояниях отказа от самих компонентов.