Исключения в Python и немного о try-except и raise

Поделиться
HTML-код
  • Опубликовано: 3 май 2021
  • Поговорим о том, что такое исключения, как и когда их бросать, как и когда перехватывать, как писать свои исключения. Немного затронем правила написания своих функций.
    Из важного:
    1) исключения это нормальный и важный механизм в питоне, не нужно стесняться его использовать, бросать и перехватывать исключения, писать свои типы исключений. К сожалению, по ряду причин не редко вижу, что программисты не кидают исключений в своих функциях
    2) когда пишем функции, то стараемся думать не в позитивном ключе, а в плане того, что может пойти не так. В таких случаях бросаем исключения, делаем это как можно раньше (в начале функции)
    3) Механизм по-умолчанию в питоне просто выведет текст исключения и завершит работу программы, если нам нужно другое поведение то используем try/except/finally
    4) блоков except может быть несколько, каждый со своим типом исключения и логикой, но важно чтобы исключение было конкретным, и в блоке всегда делаем хоть что-то. НЕ проглатываем исключения!
    5) finally выполняется в любом случае, даже если исключения не упало, НО важно понимать, что файналли это не какой то волшебный блок, исключение может упасть и там, нужно обдумывать логику этого блока (например не использовать переменные, которые могли не быть созданы)
    6) raise используем чтобы бросить исключение самостоятельно, при этом можно указать какое конкретно исключение бросить. Если не указать то будет брошено последнее упавшее исключение (важно чтобы оно было!)
    7) не стесняемся писать свои классы исключений, главное давать им понятные имена и прописываем в доке случаи, когда они могут быть выброшены
    В общем не боимся и не стесняемся работать с исключениями!
    Читать:
    docs.python.org/3/reference/e...
    docs.python.org/3/reference/c...
    docs.python.org/3/reference/s...
    docs.python.org/3/library/exc...
    docs.python.org/3/tutorial/er...
    Присоединяйся к помощи каналу, будет интересно)
    ✔️Бусти boosty.to/python_russian/donate
    ✔️Юмани 410011506612886
    Будь первым везде и всегда, включай уведомления о новых выпусках 🔔
    #Python #PythonRussian #PyCharm

Комментарии • 27

  • @Miron_MipoX
    @Miron_MipoX Год назад +6

    отличная подача. не устаю смотреть. обычно подобный контент на 2 минуте от общей картинки либо глаза начинают болеть, либо уши)) а тут смотрю на одном дыхании)

  • @dodokwak
    @dodokwak 2 года назад +4

    Сразу видно, что автор имеет опыт, который "сын ошибок трудных". С удовольствием посмотрела видео, намучившись на работе со своим кодом и его исключениями.

  • @alexandrbaranov3153
    @alexandrbaranov3153 2 года назад +2

    Спасибо за видеоматериал, очень помогло в понимании работы исключений.

  • @IlyaIlya_lopkop
    @IlyaIlya_lopkop 3 года назад +6

    Я заметил, что ты после определения своего класса исключения пишешь docstring и потом pass. Но pass не нужен, если ты docstring пишешь.
    А вообще крутой видос, правда жаль про else не упомянул.

    • @PythonRussian
      @PythonRussian  3 года назад +3

      Да, дело привычки, в свое оправдание скажу что pass явно дает понять читающему что я не забыл чего то написать, а совершенно точно ничего и не собирался тут реализовывать, кроме доки. Про елсе в питоне надо вообще отдельно снимать ибо у него своеобразное поведение не только с трай, но и с циклами

  • @user-js3yt8lg7o
    @user-js3yt8lg7o 3 года назад +2

    спасибо!

  • @ms_Mar
    @ms_Mar 10 месяцев назад

    Спасибо большое автору! Про else хотелось бы тут же)

  • @hyakkimaru52
    @hyakkimaru52 2 года назад

    Спасибо

  • @user-nb2zf3lk7j
    @user-nb2zf3lk7j 2 года назад +1

    Я подписался на вас!

  • @kan4317
    @kan4317 3 года назад

    except Exception as e:
    print(f'[X] {type(e).__name__}: {e}')
    Интересная конструкция для дебага

  • @user-do4nq3fr6t
    @user-do4nq3fr6t 3 года назад +1

    я помню помню, доезжаем до косаря, а потом стрим =)

    • @PythonRussian
      @PythonRussian  3 года назад

      все верно, осталось еще 498 подписчиков))

  • @lichrave6805
    @lichrave6805 2 месяца назад

    Спасибо за видео! Как ты меняешь раскладку клавиатуры уже написанного текста клавишами??

    • @PythonRussian
      @PythonRussian  2 месяца назад

      не понимаю о чем речь, напишите пожалуйста тайм-код для видео где я это делаю, посмотрю.

    • @lichrave6805
      @lichrave6805 2 месяца назад

      @@PythonRussian 16:10 'ша' переделал на 'if'. Как бы поменял раскладку уже напечатанного текста. Спасибо за ответ

  • @goodmorning5965
    @goodmorning5965 9 месяцев назад

    очень огромный код становиться от эти исключений... так можно один код маломайский расписать на лист А 4 , это нормальная практика ? или это нужно как-то выносить в отдельные файлы ?

    • @PythonRussian
      @PythonRussian  9 месяцев назад

      все зависит от ситуации, у тебя же не весь код бросает или ловит исключения. Конечно код из-за этого растет, но в разумных пределах, к тому же эту обработку можно вынести в менеджер контекста

  • @_mrmark
    @_mrmark Год назад

    Спасибо. Но немного раздражает какой-то посторонний шум (как будто вода течет), когда вы говорите.
    И не совсем понял, в данном примере, зачем нужны свои исключения, если есть уже готовые?

    • @PythonRussian
      @PythonRussian  Год назад

      по звуку решено в последующих видео, старые возможно перезальем с исправленным звуком. По исключениям -конечно надо использовать встроенные, свои только когда они более точные, более говорящие и помогают лучше понять проблему. Встроенные они же общего характера, для всех, а вот свое исключение можно создать с понятным именем, что даже без текста понятно где косяк

  • @luckytima2315
    @luckytima2315 2 года назад

    Я не мастер питона, но разве функцией isinstance(), не считает значение True целым = 1. То есть я спокойно пишу divide(True, 4) и он вернет результат)

    • @PythonRussian
      @PythonRussian  2 года назад

      Ну да, булин является наследником целых чисел в питоне. То есть тру это 1 и фалс это 0. Можно и просто Тру+фалс писать, только зачем?

  • @andreyrulev8064
    @andreyrulev8064 3 года назад

    этот комментарий надо срочно удалить, как предыдущие

    • @PythonRussian
      @PythonRussian  3 года назад

      никто тебе ничего не удаляет, мне твои комменты в почту приходят, но под видео их нет, не знаю почему

    • @PythonRussian
      @PythonRussian  3 года назад

      может из-за ссылок? задай вопрос ютубу. В телеге разбанил до первого косяка

    • @andreyrulev8064
      @andreyrulev8064 3 года назад

      @@PythonRussian не знаю, может действительно из-за ссылок. странно.

    • @dodokwak
      @dodokwak 2 года назад

      @@andreyrulev8064 да, много комментов удаляются ЮТ ботом, особенно он ссылки не любит. Ну иногда просто не в духах. Я проверяю обычно из другого браузера, что осталось от моего коммента.