Ответ
Нет. Throwable — это базовый класс для всех исключений и ошибок в Java. Он делится на два основных подкласса:
Error— неконтролируемые (unchecked) системные ошибки (например,OutOfMemoryError,StackOverflowError).Exception— исключения, которые, в свою очередь, делятся на:- Контролируемые (checked): Наследники
Exception, но неRuntimeException(например,IOException,SQLException). Требуют обязательной обработки (try-catch) или объявления в сигнатуре метода (throws). - Неконтролируемые (unchecked): Наследники
RuntimeException(например,NullPointerException,IllegalArgumentException).
- Контролируемые (checked): Наследники
Примеры:
// Контролируемое исключение (Checked) - требует обработки
try {
Files.readAllBytes(Paths.get("file.txt"));
} catch (IOException e) { // Обязательный блок catch или throws
e.printStackTrace();
}
// Неконтролируемое исключение (Unchecked) - не требует объявления
throw new RuntimeException("Что-то пошло не так");
Таким образом, Throwable сам по себе не является контролируемым исключением — это общий корень иерархии.
Ответ 18+ 🔞
Давай-ка я тебе на пальцах, но с технической точностью, объясню эту дичь про исключения в Java. А то у тебя, я смотрю, в голове каша, как у Герасима после утопления Муму.
Смотри сюда, главный дед всей этой движухи — это Throwable. Он как тот самый здоровый немой мужик, который всех породил. От него два ствола пошли, как рога у чёрта.
Первый ствол — Error. Это, блядь, полный пиздец, конец света. OutOfMemoryError, StackOverflowError. Ты на это нихуя не повлияешь, это JVM сама с ума сошла. Неперехватываемые (unchecked), и правильно — че с ними делать-то? Бежать, сука, перезапускать.
Второй ствол — Exception. Вот тут уже начинается цирк. Он делится на две важные ветки, как судьба у развилки.
-
Контролируемые (Checked). Это прям вот все, кроме детей
RuntimeException. Например,IOException. Это как бюрократ-пиздюк: "А ты предусмотрел, что файла может не быть? Нет? А ну-ка нахуй иди, либо оберни вtry-catch, либо впишиthrowsв объявление метода! Иначе компилятор тебя, мудака, даже запустить не даст!" Требуют обязательной обработки. Надоели, блядь, как мартышлюшки. -
Неконтролируемые (Unchecked). Это дети
RuntimeException.NullPointerException,IllegalArgumentException. Вот это уже по-нашему, по-развязному. Могут выскочить отовсюду, как хуй из штанов. Компилятор на них забивает болт, не требует обязательныхcatch. Но если вылезут — твоя программа накрывается медным тазом. Это как Герасим: молчал-молчал, а потом как впендюрит!
Так вот, Throwable — он сам по себе НЕ контролируемое исключение. Он просто дедушка, корень. Контролируемость — это свойство его внуков и правнуков.
Примеры, чтобы вообще мозг встал на место:
// Контролируемое (Checked) — типа, "эй, программист, подумай головой!"
try {
Files.readAllBytes(Paths.get("file.txt")); // А вдруг файла нет?
} catch (IOException e) { // ОБЯЗАН либо поймать...
e.printStackTrace();
}
// Или ОБЯЗАН объявить в методе: public void read() throws IOException
// Неконтролируемое (Unchecked) — типа, "похуй, живи опасно, бро"
throw new IllegalArgumentException("Ты чё, мудила, мне null подсунул?!"); // Компилятор промолчит. А рантайм — нет.
Короче, запомни: Throwable — это просто общий предок. А вся эта хуйня с checked/unchecked — это уже про его детей (Exception) и внуков (RuntimeException). Всё, вопрос закрыт, иди код пиши.