Исключения бывают checked и unchecked. Checked требуется указывать в сигнатуре метода в разделе
throws; перехватывать или добавлять в throws в вызывающем его методе. Unchecked можно добавить, но не обязательно, перехватывать не обязательно даже если указана в throws. 🔘
Throwable – базовый класс для всего что может быть использовано с оператором throw и в конструкции try-catch🔘
RuntimeException – «нормальные» unchecked-исключения🔘
Error – unchecked исключения, которые означают «серьезные проблемы» приложения. Не должны обрабатываться (хотя технически можно). Теоретически JVM может находиться в невалидном состоянии и не давать больше никаких гарантий🔘
Exception (кроме RuntimeException) – checked исключения