Просто длинный комментарий к ответу инструментария.
Причина, по которой проверенные исключения являются проблемой, заключается в том, что они в конечном итоге приводят к такому коду:
try {
Something that throws an exception
} catch (Exception e) {}
Это худший случай. Прежде всего, они не регистрируют, что они ловят исключение. Это часто случается, и почти принудительно выполняется из-за очень глупых проверенных исключений, таких как в Thread.sleep (), он генерирует InterruptedException, который ДОЛЖЕН быть перехвачен, но в 99% случаев вам все равно, если вы его получили или нет .
В приведенном выше случае это усугубляется тем фактом, что люди, как правило, просто ловят «Исключение», если выбрасывается более одного броска. Это означает, что даже если выдается критическое непроверенное исключение, оно будет перехвачено и проигнорировано, что сделает практически невозможным поиск проблемы.
Не раз я был в командах, которым приходилось тратить около одного человека в месяц, пытаясь отследить ошибки, скрытые таким образом.
Это хорошая концепция, которая становится ужасной, когда вы добавляете в тот факт, что именно люди должны применять ее ответственно.