Обработка по уровням
В реальном приложении исключения обрабатывают не где попало, а по правилам:
- не глотать: пустой
catch {}прячет проблему — как минимум залогируй; - лови узко (конкретный тип), а не
catch (Exception e)на всё подряд; - оборачивай с причиной (chaining):
throw new ServiceException("не удалось создать заказ", e)— исходное исключение сохранится вcause; - обрабатывай на правильном уровне: низкие слои оборачивают в доменные ошибки, верхний (например
@ControllerAdvice) — логирует и формирует ответ пользователю.
try {
orderRepository.save(order);
} catch (SQLException e) {
throw new ServiceException("не удалось сохранить заказ", e); // обернули с причиной
}
🎤 Закрыл тему, если можешь объяснить:
• почему нельзя «глотать» исключения;
• что значит обрабатывать исключения «на правильном уровне».
• что значит обрабатывать исключения «на правильном уровне».