Что такое проверяемые исключения

Ответ

Проверяемые исключения (checked exceptions) — это исключения, которые компилятор Java требует явно обрабатывать. Они наследуются от Exception (но не от RuntimeException).

Пример:

try {
    FileInputStream file = new FileInputStream("file.txt");
} catch (FileNotFoundException e) {
    e.printStackTrace();
}

Особенности:

  • Обязательны для обработки через try-catch или проброс в сигнатуре метода (throws).
  • Используются для ошибок, которые можно предвидеть (например, отсутствие файла, сетевые сбои).
  • В Kotlin проверяемых исключений нет, но при работе с Java-кодом их всё равно нужно учитывать.

Ответ 18+ 🔞

А, ну это же классика, ёпта! Проверяемые исключения в Java — это как тот самый дядя на семейном празднике, который обязательно спросит, когда ты уже замуж выйдешь или работу нормальную найдёшь. Компилятор — такой же зануда: он тебя за рукав дергает и говорит: «А ну-ка, дружок, скажи, что будешь делать, если файла нет? А? А?».

Вот смотри, пишешь ты красивый код:

FileInputStream file = new FileInputStream("file.txt");

А компилятор тебе сразу: «Э, сабака сука! А FileNotFoundException кто обрабатывать будет? Я, что ли?». И стоит, смотрит на тебя, как будто ты полный распиздяй. И ты такой: «Да похуй, файл-то есть!». А он не верит. Доверия ебать ноль.

И приходится тебе эту простыню разворачивать:

try {
    FileInputStream file = new FileInputStream("file.txt");
} catch (FileNotFoundException e) {
    e.printStackTrace(); // Или что там у тебя по плану, когда всё накрылось медным тазом
}

Либо, если тебе лень, ты можешь этот горячий картофель дальше по цепочке выбросить, прописав в заголовке метода throws FileNotFoundException. Мол, не мои проблемы, пусть тот, кто меня вызывает, голову ломает. Хитрая жопа, короче.

В чём, блядь, соль?

  • Обязаловка. Их обязательно надо либо обнять (try-catch), либо отфутболить (throws). Иначе код просто не скомпилируется. Компилятор — мамин надзиратель.
  • Для предсказуемых косяков. Это не какие-то дикие «ой, память кончилась». Это цивильные, ожидаемые проблемы: файл удалили, сеть легла, база данных спит. Ситуации, от которых программист должен как-то защититься.
  • Kotlin и его похуизм. А вот в Котлине, ядрёна вошь, этой обязаловки нет. Там все исключения по умолчанию — непроверяемые. Но это не значит, что про них можно забыть! Если ты из Котлина дергаешь старый добрый Java-код, который объявляет throws — будь добр, приготовься к тому, что тебе могут прилететь те же FileNotFoundException. Просто компилятор Kotlin не будет стоять над душой. Ответственность на тебе, чувак.

Короче, проверяемые исключения — это такая бюрократическая прослойка в мире Java. Иногда бесит, как таракан в тарелке с супом, но зато заставляет думать о плохом заранее. А иногда из-за них код обрастает такими try-catch блоками, что смотреть противно — пиздопроебищная история.