непроверенное исключение, которое было бы лучше, чем проверенное

я понимаю, что былообширноеобсуждениесравнительных достоинств проверенных исключений по сравнению с непроверенными исключениями в Java, и я не намерен повторно возвращаться к ним. весь спор.

Скорее, я хотел бы задать очень конкретный вопрос, который пришел мне в голову, когда я читал «Эффективную Java» Джошуа Блоха, 2-е издание. Пока я читал, я заметил, что в пункте 59 («Избегайте ненужного использования проверенных исключений») Джошуа приводит пример в Java API, где используется проверенное исключение. В частности, в Object:

protected Object clone()
            throws CloneNotSupportedException

... а затем утверждает, что это должно было быть непроверенное исключение.

Если программист, использующий API, не может добиться большего, более подходящим будет непроверяемое исключение. Одним из примеров исключения, которое не проходит этот тест, является CloneNotSupportedException. Он вызывается Object.clone, который следует вызывать только для объектов, реализующих Cloneable (статья 11). На практике блок catch почти всегда имеет характер отказа утверждения. Проверяемый характер исключения не дает никакой пользы программисту, но требует усилий и усложняет программы.

Затем я посмотрел, есть ли у него пример обратного, но я не смог его найти.

Поэтому я хотел бы спросить, может ли кто-нибудь привести пример API на Java, который использует непроверенное исключение, но проверенное исключение было бы лучшим выбором, и объяснить, почему. Пример из реального мира был бы предпочтительнее, но я открыт для надуманного примера, если бы он также хорошо иллюстрировал ситуацию.

Редактировать: Тем, кто проголосовал за то, чтобы закрыть это как неконструктивное, я хочу дать понять, что я не ищу мнения, дебатов, аргументов или расширенного обсуждения. И я не провожу опрос. Скорее я ищу ссылки на примеры, которые дают четкий анализ того, как выгоды перевешивают затраты. (Это подразумевает признание того, что существуют затраты.) Тем не менее, я скептически отношусь к тому, делает ли это возможным сам характер этого вопроса. Я считаю, что если Джон Скит не может этого сделать, маловероятно, что это можно сделать. Так что, возможно, ты прав. Закройте, если нужно.

Редактировать:Хотя меня не тронул ответ, я собираюсь присудить это Джону только за то, что я его принял.

10
задан Community 23 May 2017 в 12:07
поделиться