Общие вопросы
Смешанные вопросы по Java.
Открыть разделБаза Hintsage
Язык Java, JVM и экосистема серверной разработки.
Темы раздела
Смешанные вопросы по Java.
Открыть разделБазовая семантика языка, типы, методы, классы и ключевые конструкции.
Открыть разделНаследование, полиморфизм, интерфейсы, классы и разрешение методов.
Открыть разделJava Collections Framework, контракты, реализации и сложность операций.
Открыть разделJava Memory Model, потоки, синхронизация и java.util.concurrent.
Открыть разделЗагрузка классов, память JVM, GC, JIT и диагностика.
Открыть разделПараметризация типов, bounds, wildcards и стирание типов.
Открыть разделФункциональные интерфейсы, streams, collectors и параллельная обработка.
Открыть разделИерархия исключений, обработка ошибок и управление ресурсами.
Открыть разделПрактика
Вам дан блок try, в котором нет явного выброса или вызова метода с объявленным проверяемым исключением. Почему компилятор может признать catch для конкретного проверяемого типа недостижимым?
Вызванный метод выбросил RuntimeException, хотя его объявление throws этого не содержит: почему вызывающий код всё же может перехватить это исключение?
Как ведёт себя Throwable.addSuppressed, если передать ему сам объект исключения?
Сравните роль throw и throws при работе Java-метода с исключениями.
Если закрытие одного из нескольких ресурсов в try-with-resources выбросило исключение, будут ли закрыты остальные ресурсы?
Какие ограничения действуют при установке причины исключения через initCause после его создания?
Допустима ли для вызывающего кода ссылка на объект, если его конструктор завершился исключением?
Проверьте, будет ли вызван close(), если конструктор ресурса завершился исключением:
class Demo {
static class R implements AutoCloseable {
R() {
System.out.println("construct");
throw new RuntimeException("init");
}
@Override
public void close() {
System.out.println("close");
}
}
public static void main(String[] args) {
try (R r = new R()) {
} catch (RuntimeException e) {
System.out.println("caught");
}
}
}
Класс исключения напрямую наследует Throwable, не являясь подклассом RuntimeException или Error. Как компилятор классифицирует такое исключение?
Кто обязан закрыть ресурс, возвращённый фабричным методом, если ресурс не передан в try-with-resources?
В try-with-resources один и тот же объект AutoCloseable указан в двух ресурсных позициях. Сколько раз Java вызовет его close()?
Что изменится в диагностике try-with-resources, если у основного исключения отключён механизм подавления?
Что гарантирует интерфейс AutoCloseable относительно повторного вызова close()?
В методе ниже обработчик поглощает исключение из try. Нужно ли всё равно объявлять throws IOException для компиляции?
class Demo {
static void run() {
try {
throw new IllegalStateException();
} catch (RuntimeException e) {
System.out.println("handled");
} finally {
throw new java.io.IOException();
}
}
}
Почему этот фрагмент компилируется, хотя first используется при инициализации следующего ресурса?
class Demo {
static class R implements AutoCloseable {
R child() { return new R(); }
public void close() { }
}
static void run() {
try (R first = new R();
R second = first.child()) {
// работа с обоими ресурсами
}
}
}
Куда передаётся неперехваченное исключение после завершения поиска обработчика в стеке вызовов потока?
Что произойдёт с клиентским кодом при добавлении проверяемого исключения в объявление throws уже опубликованного метода?
В каком порядке выполняются блоки finally при раскрутке стека после исключения из глубоко вложенного вызова?
Что теряет поток, если обработчик InterruptedException поглощает его, не восстановив флаг прерывания?
Внутри метода ресурс объявлен в заголовке try-with-resources. Доступен ли этот ресурс в блоках catch и finally?
Показано 381–400 из 403