Throwable находится на вершине всех исключений.Под Throwable есть ошибка и исключение.Под Исключением у вас есть RuntimeException.
У Java есть два типа исключений - проверенные и непроверенные.Проверенные исключения применяются компилятором (вы должны объявить их в предложении throws и перехватить их в конце концов).Непроверенные исключения не применяются для перехвата или объявления в предложении throws.
(Спорная часть ответа)
Throwable существует, так что есть родитель для всех типов исключений.Вы никогда не должны объявлять, что вы бросаете Throwable и никогда не ловите его (если только вы действительно не знаете, что делаете).
Существует ошибка, указывающая на проблемы со средой выполнения, вещи, которые ваша программа, вероятно, не может восстановитьнапример, плохо отформатированный файл класса или нехватка памяти на виртуальной машине.Вы не должны перехватывать ошибку, если вы действительно не знаете, что делаете.
Исключение существует как корень для всех ошибок, не связанных с программированием (см. RuntimeException для исключения из этого), например, файл не может бытьсоздан потому, что диск заполнен.Вы не должны бросать, бросать или ловить исключение.Если вам нужно перехватить Exception, убедитесь, что вы знаете, что делаете.
RuntimeException существует, чтобы указывать на все ошибки программиста, такие как прохождение конца массива или вызов метода для нулевого объекта.Это те вещи, которые вы должны исправить, чтобы они не создавали исключений - это означает, что вы, программист, испортили код.Опять же, вы не должны ловить их, если вы не знаете, что делаете.