Выбор ответа Senior Исключения и контекстные менеджеры обновлено
raise против raise e
Вопрос
Чем голый raise внутри except Exception as e отличается от raise e?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: raise бросает как есть, raise e добавляет строку броска в traceback. Оба варианта бросают тот же объект.
Варианты ответа
raiseбросает как есть,raise eдобавляет строку броска в tracebackправильный ответ- Разницы нет никакой, оба варианта дают одинаковый traceback
raise eсоздаёт копию исключения, а голыйraiseбросает сам оригинал- Голый
raiseразрешён только вfinally, а не вexcept
Разбор
Оба варианта бросают тот же объект. Но raise e записывает в traceback строку повторного броска, и при чтении лога кажется, что ошибка возникла в обработчике. Голый raise сохраняет исходную картину и короче. Копий исключений не создаётся, а голый raise работает внутри except (вне активного исключения он даёт RuntimeError).
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.