Выбор ответа Junior Исключения и контекстные менеджеры обновлено

Порядок веток except

Вопрос

Что напечатает код при FileNotFoundError в open?

try:
    open('nope.txt')
except OSError:
    print('os')
except FileNotFoundError:
    print('missing')

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: os. FileNotFoundError подкласс OSError.

Варианты ответа

  1. missing
  2. osправильный ответ
  3. os и missing
  4. Ничего, исключение уйдёт наружу

Разбор

FileNotFoundError подкласс OSError. Ветки except проверяются сверху вниз, и срабатывает первая подходящая, то есть OSError. До второй ветки дело не дойдёт, и линтеры предупреждают о такой недостижимой ветке. Конкретные исключения ставят выше общих.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.