Наверху Throwable — корень. Два наследника: Error (OutOfMemoryError, StackOverflowError — ловить не нужно, это критические проблемы JVM) и Exception. Exception делится на checked (IOException, SQLException — надо обрабатывать) и unchecked (RuntimeException и наследники — NullPointerException, IllegalArgumentException). Свои исключения наследуют от Exception (checked) или RuntimeException (unchecked). В Spring обычно делают кастомные unchecked и обрабатывают через @ExceptionHandler.
Как устроена иерархия исключений в Java?
Junior
390 просмотровAFK Offer AI
Зачем нужен Optional и как его правильно использовать?