Back to questions
IT One
Senior
7
Если исключение выпало и в try, и при закрытии ресурса (try-with-resources), что поймаем в catch?
Companies where asked
Answer from AI
sobes.tech AI
Если в блоке try возникает исключение, а при закрытии ресурса в try-with-resources — другое исключение, то в catch будет поймано исключение из блока try, а исключение, возникшее при закрытии ресурса, станет подавленным (suppressed) и будет доступно через метод Throwable.getSuppressed() у основного исключения.
Пример:
try (MyResource res = new MyResource()) {
throw new IOException("Ошибка в try");
} catch (IOException e) {
System.out.println("Основное исключение: " + e.getMessage());
for (Throwable suppressed : e.getSuppressed()) {
System.out.println("Подавленное исключение: " + suppressed.getMessage());
}
}
В этом примере в catch будет поймано исключение "Ошибка в try", а исключение, возникшее при закрытии ресурса, будет подавлено и доступно через getSuppressed().