Нет, проверенные исключения не нарушают OCP, т.к. по той простой причине, что OCP применяется к модулям, а не к методам.
Если вы считаете, что проверенное исключение — это просто еще одна часть сигнатуры метода, этот вопрос аналогичен вопросу о том, нарушают ли имена методов, параметры методов или возвращаемые типы методов OCP. Этот принцип просто не применим на таком детальном уровне.
Не зная, как реализуется метод или, что более важно, как метод раскрывается через API своего модуля, нам не о чем судить. Например, метод может полагаться на жестко закодированную константу; но если метод может быть переопределен клиентами, он по-прежнему открыт для расширения. Ничто о существовании проверенного исключения не сообщает нам, является ли модуль расширяемым.
С другой стороны, если проверенные исключения заставляют метод быть окончательным, и если такой метод предоставляется модулем как часть его общедоступного API, и если этот модуль не предоставляет альтернативы этому API, то это будет нарушением OCP.
person
jaco0646
schedule
01.03.2019