Я документирую только исключения, которые могут быть обработаны. Не имеет смысла документировать любые другие исключения. Мое определение «обработки» исключений состоит в том, что метод может доставить обещанный результат путем перехвата исключения.
Так что этот ответ только для тех исключений:
Если вы хотите следовать принципу открытия / закрытия, вам следует документировать исключения для интерфейса, а не для конкретного класса. И все реализации должны выдавать одно и то же исключение, когда происходит один и тот же сценарий.