Исключения в 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
отличная подача. не устаю смотреть. обычно подобный контент на 2 минуте от общей картинки либо глаза начинают болеть, либо уши)) а тут смотрю на одном дыхании)
Сразу видно, что автор имеет опыт, который "сын ошибок трудных". С удовольствием посмотрела видео, намучившись на работе со своим кодом и его исключениями.
Спасибо за видеоматериал, очень помогло в понимании работы исключений.
Шикардос
спасибо!
Я заметил, что ты после определения своего класса исключения пишешь docstring и потом pass. Но pass не нужен, если ты docstring пишешь.
А вообще крутой видос, правда жаль про else не упомянул.
Да, дело привычки, в свое оправдание скажу что pass явно дает понять читающему что я не забыл чего то написать, а совершенно точно ничего и не собирался тут реализовывать, кроме доки. Про елсе в питоне надо вообще отдельно снимать ибо у него своеобразное поведение не только с трай, но и с циклами
Спасибо большое автору! Про else хотелось бы тут же)
Я подписался на вас!
спасибо, молодец! =)
except Exception as e:
print(f'[X] {type(e).__name__}: {e}')
Интересная конструкция для дебага
я помню помню, доезжаем до косаря, а потом стрим =)
все верно, осталось еще 498 подписчиков))
Спасибо
Спасибо за видео! Как ты меняешь раскладку клавиатуры уже написанного текста клавишами??
не понимаю о чем речь, напишите пожалуйста тайм-код для видео где я это делаю, посмотрю.
@@PythonRussian 16:10 'ша' переделал на 'if'. Как бы поменял раскладку уже напечатанного текста. Спасибо за ответ
очень огромный код становиться от эти исключений... так можно один код маломайский расписать на лист А 4 , это нормальная практика ? или это нужно как-то выносить в отдельные файлы ?
все зависит от ситуации, у тебя же не весь код бросает или ловит исключения. Конечно код из-за этого растет, но в разумных пределах, к тому же эту обработку можно вынести в менеджер контекста
Спасибо. Но немного раздражает какой-то посторонний шум (как будто вода течет), когда вы говорите.
И не совсем понял, в данном примере, зачем нужны свои исключения, если есть уже готовые?
по звуку решено в последующих видео, старые возможно перезальем с исправленным звуком. По исключениям -конечно надо использовать встроенные, свои только когда они более точные, более говорящие и помогают лучше понять проблему. Встроенные они же общего характера, для всех, а вот свое исключение можно создать с понятным именем, что даже без текста понятно где косяк
Я не мастер питона, но разве функцией isinstance(), не считает значение True целым = 1. То есть я спокойно пишу divide(True, 4) и он вернет результат)
Ну да, булин является наследником целых чисел в питоне. То есть тру это 1 и фалс это 0. Можно и просто Тру+фалс писать, только зачем?
этот комментарий надо срочно удалить, как предыдущие
никто тебе ничего не удаляет, мне твои комменты в почту приходят, но под видео их нет, не знаю почему
может из-за ссылок? задай вопрос ютубу. В телеге разбанил до первого косяка
@@PythonRussian не знаю, может действительно из-за ссылок. странно.
@@andreyrulev8064 да, много комментов удаляются ЮТ ботом, особенно он ссылки не любит. Ну иногда просто не в духах. Я проверяю обычно из другого браузера, что осталось от моего коммента.