Senior
Que attrapons-nous dans le catch si une exception se produit à la fois dans le try et lors de la fermeture de la ressource (try-with-resources) ?
sobes.tech IA
Réponse de l'IA
Если в блоке 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().