J
Java-разработчик
@iamjavadev17 подп.
25просмотров
22 декабря 2025 г.
questionScore: 28
☄️ Suppressed исключения: что происходит, когда летит сразу несколько ошибок? Знаете ли вы, что в Java исключение может нести в себе другие исключения? Это не баг, а фича — suppressed exceptions. 🖥Контекст: Возникает в блоке try-with-resources и когда в finally бросается исключение. 🤓Пример: try (var resource = new AutoCloseableResource()) { throw new RuntimeException("Основная ошибка в try-блоке"); } catch (Exception e) { System.out.println(e.getMessage()); // "Основная ошибка в try-блоке" // А где же исключение из close()?! Throwable[] suppressed = e.getSuppressed(); for (Throwable t : suppressed) { System.out.println("Suppressed: " + t.getMessage()); } } class AutoCloseableResource implements AutoCloseable { @Override public void close() throws Exception { throw new IOException("Ошибка при закрытии ресурса"); } } ✨Что произойдёт? 1. Исключение из try-блока — основное 2. Исключение из close() — suppressed (добавляется к основному) 3. JVM гарантирует, что suppressed не потеряются! ❓Зачем это нужно? ✈️ Не терять ошибки закрытия ресурсов ✈️ Видеть полную картину сбоя ✈️ Правильно логировать цепочки проблем 📌Итог: Всегда проверяйте getSuppressed() при обработке исключений в сложных сценариях с ресурсами. Одна ошибка может скрывать другую! ✈️Подписаться: @iamjavadev #исключения #ресурсы #сакральныезнания #trywithresources
25
просмотров
1408
символов
Да
эмодзи
Нет
медиа

Другие посты @iamjavadev

Все посты канала →
☄️ Suppressed исключения: что происходит, когда летит сразу — @iamjavadev | PostSniper