Java сыграла огромную роль в обучении миллионов программистов обработке ошибок, надо отдать ей должное. И идея была красивая, что каждый метод будет честно признаваться, какой подлянки от него ждать. Многие сразу говорили, что будет catch (Exception e) {}, но это явная патология, которая автоматически обнаруживается любым анализатором кода.
Однако, если в интерфейсе метод бросает исключение, то убрать это исключение можно только одновременно во всех реализациях данного метода. Меня больше всего раздражает
UnsupportedEncodingException, при том что я всегда использую UTF-8.
При этом NPE случаются постоянно и ничто их не останавливает. Были придуманы
аннотации @NotNull и @Nullable, но в стандарт Java они так и не вошли.
В результате современные популярные библиотеки (например, Spring) checked exceptions просто не используют. В
Kotlin их уже нет в принципе.