Ответ
Проверяемые исключения (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 блоками, что смотреть противно — пиздопроебищная история.