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

แชร์
ฝัง
  • เผยแพร่เมื่อ 9 ก.ย. 2024
  • Поговорим о том, что такое исключения, как и когда их бросать, как и когда перехватывать, как писать свои исключения. Немного затронем правила написания своих функций.
    Из важного:
    1) исключения это нормальный и важный механизм в питоне, не нужно стесняться его использовать, бросать и перехватывать исключения, писать свои типы исключений. К сожалению, по ряду причин не редко вижу, что программисты не кидают исключений в своих функциях
    2) когда пишем функции, то стараемся думать не в позитивном ключе, а в плане того, что может пойти не так. В таких случаях бросаем исключения, делаем это как можно раньше (в начале функции)
    3) Механизм по-умолчанию в питоне просто выведет текст исключения и завершит работу программы, если нам нужно другое поведение то используем try/except/finally
    4) блоков except может быть несколько, каждый со своим типом исключения и логикой, но важно чтобы исключение было конкретным, и в блоке всегда делаем хоть что-то. НЕ проглатываем исключения!
    5) finally выполняется в любом случае, даже если исключения не упало, НО важно понимать, что файналли это не какой то волшебный блок, исключение может упасть и там, нужно обдумывать логику этого блока (например не использовать переменные, которые могли не быть созданы)
    6) raise используем чтобы бросить исключение самостоятельно, при этом можно указать какое конкретно исключение бросить. Если не указать то будет брошено последнее упавшее исключение (важно чтобы оно было!)
    7) не стесняемся писать свои классы исключений, главное давать им понятные имена и прописываем в доке случаи, когда они могут быть выброшены
    В общем не боимся и не стесняемся работать с исключениями!
    Читать:
    docs.python.or...
    docs.python.or...
    docs.python.or...
    docs.python.or...
    docs.python.or...
    Присоединяйся к помощи каналу, будет интересно)
    ✔️Бусти boosty.to/pyth...
    ✔️Юмани 410011506612886
    Будь первым везде и всегда, включай уведомления о новых выпусках 🔔
    #Python #PythonRussian #PyCharm

ความคิดเห็น • 28

  • @Miron_Nicolaevich
    @Miron_Nicolaevich ปีที่แล้ว +6

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

  • @dodokwak
    @dodokwak 2 ปีที่แล้ว +4

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

  • @alexandrbaranov3153
    @alexandrbaranov3153 2 ปีที่แล้ว +2

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

  • @barma1309
    @barma1309 หลายเดือนก่อน

    Шикардос

  • @krevedko_krevedkin
    @krevedko_krevedkin 3 ปีที่แล้ว +2

    спасибо!

  • @IlyaIlya_lopkop
    @IlyaIlya_lopkop 3 ปีที่แล้ว +6

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

    • @PythonRussian
      @PythonRussian  3 ปีที่แล้ว +3

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

  • @ms_Mar
    @ms_Mar ปีที่แล้ว

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

  • @user-nb2zf3lk7j
    @user-nb2zf3lk7j 3 ปีที่แล้ว +1

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

    • @PythonRussian
      @PythonRussian  3 ปีที่แล้ว

      спасибо, молодец! =)

  • @kan4317
    @kan4317 3 ปีที่แล้ว

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

  • @user-do4nq3fr6t
    @user-do4nq3fr6t 3 ปีที่แล้ว +1

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

    • @PythonRussian
      @PythonRussian  3 ปีที่แล้ว

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

  • @hyakkimaru52
    @hyakkimaru52 2 ปีที่แล้ว

    Спасибо

  • @lichrave6805
    @lichrave6805 5 หลายเดือนก่อน

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

    • @PythonRussian
      @PythonRussian  5 หลายเดือนก่อน

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

    • @lichrave6805
      @lichrave6805 5 หลายเดือนก่อน

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

  • @goodmorning5965
    @goodmorning5965 ปีที่แล้ว

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

    • @PythonRussian
      @PythonRussian  ปีที่แล้ว

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

  • @_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 да, много комментов удаляются ЮТ ботом, особенно он ссылки не любит. Ну иногда просто не в духах. Я проверяю обычно из другого браузера, что осталось от моего коммента.