Выбор ответа Middle Исключения и ошибки обновлено
Цепочка исключений
Вопрос
Репозиторий ловит PDOException и бросает своё OrderNotSavedException. Как не потерять исходную причину?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Передать $e третьим аргументом конструктора как $previous. Третий параметр конструктора Exception это $previous.
Варианты ответа
- Записать
$e->getMessage()в сообщение нового исключения - Передать
$eтретьим аргументом конструктора как$previousправильный ответ - Бросить
$eповторно сразу после броска нового исключения - Вызвать
exit($e), чтобы исходная ошибка попала в лог сервера
Разбор
Третий параметр конструктора Exception это $previous. Логгеры и обработчики фреймворков показывают всю цепочку через getPrevious(), включая стек исходной ошибки. Сообщение без стека теряет контекст. Код после throw не выполнится.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.