8 советов как ЛУЧШЕ писать исключения на Python

Поділитися
Вставка
  • Опубліковано 26 чер 2024
  • ⭐ Курс ООП и Приват канал: www.zproger-school.com/?...
    ⭐ Телеграм канал: t.me/codeblog8
    ⭐ Исходный код: t.me/codeblog8/189
    В данном видео рассмотрим 8 ошибок при написании исключений на Python, и на основе этих ошибок получим правильную реализацию.
    Данные проблемы часто встречаются в чужом коде, и они могут привести к огромным багам, если реализовать обработку исключений неправильно.
    📁 Github: github.com/Zproger
    📁 Все плейлисты с уроками: bit.ly/39GaY89
    📁 Связаться со мной: zproger777@gmail.com
    📁 Поддержать канал: github.com/Zproger/donate
    Тайм-коды:
    0:00 - Что будет в видео?
    0:59 - Первая ошибка, которая может убить ваш проект
    4:27 - Почему нельзя поднимать исключение от Exception?
    5:48 - Как заглушить ошибки без except pass?
    6:53 - Можно ли игнорировать блок Exception?
    7:18 - Данная ошибка будет скрывать все исключения
    8:33 - Как иерархия исключений может создать баги в проекте?
    10:03 - Манипуляция стектрейсом через raise from
    12:12 - Бонус. Способ затроллить разработчиков
    13:15 - 1000 лайков == (python.skills ** 20)

КОМЕНТАРІ • 29

  • @Dmitrii-Zhinzhilov
    @Dmitrii-Zhinzhilov Рік тому +3

    ZProger, благодарю! Высший класс! 🔥🔥

  • @hoopengo2289
    @hoopengo2289 Рік тому +2

    Спасибо за excepthook, очень долго искал реализацию exception handler в python, но так ничего и не находил, до этого дня. Еще раз, спасибо)

  • @probro-cw9rt
    @probro-cw9rt Рік тому +13

    Вы забыли самый главный совет при написании исключений - не писать исключения). Исключения считаются антипаттерном, т.к. для того, чтобы их поймать, нужно запустить определённый блок кода. Соответственно, при возникновении ошибки, этот блок отработает "вхолостую". Более того, многочисленное перехватывание нескольких исключений в одном блоке, показанное в первом примере, может разрастаться до нереальных размеров (вплоть до 10-20 экзептов). Тем более, если речь идёт о собственных типах исключений. В любом случае, нужно стараться использовать блоки if/else, в качестве декораторов и оборачивать ими функции или методы. Это особенно удобно при валидации пользовательского ввода. Таким образом, мы выявим ошибку до вызова кода и предотвратим потерю времени. Конкретно try/except нужно использовать в тех случаях, где нам всё же необходимо выполнить код, для того, чтобы выявить исключение. К примеру, при общении с API сайта, либо запросах к базе данных.

    • @k0chi190
      @k0chi190 Рік тому +6

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

  • @gardenspecial7088
    @gardenspecial7088 Рік тому +2

    Самый недооценённый канал.
    Но он скоро стрельнет, в сфере ит.
    Спасибо дал мне инфы, которая решила мою проблему, долго ломал над ней голову.
    Успехов твоему каналу подписался !🎉

    • @zproger
      @zproger  Рік тому

      Благодарю! Я рад что мой контент помог вам

  • @usakabi3843
    @usakabi3843 Рік тому +1

    Можно использовать:
    try:
    #code
    except Exception as _ex:
    print('error', _ex)

  • @robertproductsrp473
    @robertproductsrp473 Рік тому +3

    Очень крутое видео! Спасибо за классные и полезные ролики

    • @zproger
      @zproger  Рік тому +2

      Благодарю! Для меня это служит хорошей мотивацией

  • @ryd33n
    @ryd33n Рік тому +26

    Каша из слов, Информационная составляющая хорошая, но для понимания просто каша из слов, Нет пауз между блоками про ошибки, все сливается и не понятно, относится это к прошлому блоку или к текущему. Ваше повествование это просто ужас для понимания. Зачем так гнаться? Вы хотя бы внятные паузы между словами делали бы, а то выходит бесконечно слипшийся монолог. Из-за этого подданная информация сложна для понимания. Но сами ситуации поучительны.

    • @zproger
      @zproger  Рік тому

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

    • @Dem0nek
      @Dem0nek Рік тому +9

      Я, смотрящий это видео в 2х и улавливающий суть:
      *Подавился энергетиком

    • @Gora_NaSoS
      @Gora_NaSoS Рік тому

      Страшно, нам просто страшно...

  • @user-it3yo1sn6i
    @user-it3yo1sn6i Рік тому +1

    Смотрю у тебя VSCode на линуксе? Лучше чем Pycharm? Если так, подскажи пожалуйста, какие + у VSCode по сравнению с Pycharm

    • @zproger
      @zproger  Рік тому

      Не то чтобы лучше, просто в видео смотрится более удачно. А так используя и то и другое

  • @user-gw8gi7jt3y
    @user-gw8gi7jt3y Рік тому +1

    Как правильно поступить, если в нескольких функциях класса прописывать однотипные исключения? Происходит дублирование одинаковых строк кода. Может в таком случае их вынести в отдельную функцию?

    • @dima.kasper
      @dima.kasper Рік тому +1

      Или воспользоваться декоратором

  • @robertproductsrp473
    @robertproductsrp473 Рік тому +1

    А как называется тема для vscode? Красивая

  • @Alpha_Gamma_Beta
    @Alpha_Gamma_Beta Рік тому

    я пользую что-то типа такого..
    except Exception as err: print(f"Mark_01: {err}"
    ну то есть вообще не всегда понимаю, какой вообще эксепшн могу поймать...

  • @user-xz5oz
    @user-xz5oz Рік тому +2

    Сколько раз за видео автор сказал слово ошибка?

  • @farpurple
    @farpurple Рік тому +1

    Кипит... Нтхрена не понял, чото останется, ексептхук мб, круто, спасибо

    • @zproger
      @zproger  Рік тому

      Пожалуйста :)

  • @terpiIa
    @terpiIa Рік тому +3

    thirtysix