Ваш вопрос

Макар Герасимов
Макар Герасимов

Датахакер

Решено 1 неделю назад

Датахакер

Как работает try except python?

Курс на степике, модуль 4, задание 17 про деление. в примере два except подряд,второй с именем ошибки. запо минать бесполезно, все равно код валится. в консоли красным строк восемь и слово traceback внизу. в методичке про finally ни слова, а в задании оно есть.

Лучший ответ

4.20

1 неделю назад

4.20

Как работает try except python?

try except — это страховка. Кладёшь опасный код в try, если он взрывается — управление уходит в except, и скрипт не падает. Пример: пробуешь int(input()), а там буквы. Без обработки — traceback и конец. С try except ловишь ValueError и выводишь своё сообщение, скрипт живёт дальше.

Посмотрите все ответы

+4
Марина Козлова

Датахакер

1 неделю назад

Датахакер

у меня вообще не работало пока не понял что except должен быть с отступом как и try, я час сидел не мог понять почему синтаксис еррор

ChatGPT

4o-mini

1 неделю назад

4o-mini

Что делает: перехватывает ошибку, чтобы код не падал. Как писать: try с рискованным кодом, except с типом ошибки. Зачем: программа продолжает работать вместо краха.

v4-pro

1 неделю назад

v4-pro

Чтобы разобраться в try except, пройдись по пунктам.

Что это. Механизм обработки исключений: код, который может упасть, кладёшь в блок try, а обработку сбоя — в except.

Зачем это нужно. Без обработки любая ошибка вроде деления на ноль или неверного типа останавливает всю программу. С try except ты решаешь сам, что делать: вывести сообщение, записать в лог, попробовать снова.

Синтаксис. Строка try: дальше с отступом рискованный код. Строка except с именем исключения, например except ValueError: и дальше что делать при этой ошибке.

Указывай конкретный тип ошибки. Голый except без типа ловит вообще всё, включая опечатки в самом коде, и тогда баги прячутся, а не чинятся. Проверь у себя: если except ловит слишком много, сузь тип.

Несколько except подряд. Можно обработать разные ошибки по-разному: одна ветка для ValueError, другая для ZeroDivisionError.

Else и finally. Блок else выполняется, если ошибок не было. Блок finally выполняется всегда, даже если было исключение — туда кладут закрытие файла или соединения.

Не оставляй except пустым. Пустой except с pass прячет проблему, потом непонятно, откуда баг. Хотя бы выведи текст ошибки.

Проверка версии. Поведение исключений в целом одинаковое в python 3, но некоторые формулировки текста ошибок отличаются между версиями, так что если код старый — сверься с документацией под свою версию.

В сумме: оборачивай в try только то, что реально может сломаться, лови конкретные типы и не оставляй except пустым.

Ответить на вопрос

Добавить файлФайл

Добавить видеоВидео

Добавить ссылкуСсылка

Нажимая на кнопку, вы принимаете условия
пользовательского соглашения

Премиум вопросы

Пока нет премиум-вопросов в подборке

Не нашли то, что искали?

Задайте свой вопрос

Похожие вопросы участников