Python #9 - gestion erreurs
Summary
TLDRLe script de cette vidéo en Python aborde la gestion des erreurs, un aspect crucial pour assurer la robustesse des programmes. Il explique comment éviter les plantages en utilisant les instructions try/except pour gérer les exceptions et assurer une meilleure expérience utilisateur. Le présentateur illustre les concepts avec des exemples, notamment la conversion de saisie en entier et la division par zéro, en soulignant l'importance de ne pas se fier aux entrées de l'utilisateur et de vérifier toutes les données. La vidéo prépare le terrain pour une compréhension approfondie des objets Python dans les prochaines sessions.
Takeaways
- 😀 Le script est une session d'apprentissage de Python axée sur la gestion des erreurs.
- 🔐 L'importance de la modularité et de la sécurité dans les programmes est soulignée, en expliquant comment éviter les erreurs et gérer celles qui se produisent.
- 📝 L'exemple d'un programme demandant l'âge d'un utilisateur est utilisé pour illustrer la gestion des entrées et la conversion de type.
- ❗ Une explication des exceptions en Python est fournie, y compris les types courants comme `ValueError`, `TypeError`, et `ZeroDivisionError`.
- 🔒 La règle de ne pas faire confiance aux entrées de l'utilisateur et de vérifier toutes les données est mise en évidence pour assurer la sécurité.
- 🔄 L'utilisation des instructions `try` et `except` est expliquée pour gérer les erreurs lors de l'exécution de code potentiellement problématique.
- 📓 La différence entre les blocs `try`, `except`, `else`, et `finally` est présentée, chacun ayant un rôle spécifique dans la gestion des erreurs.
- 🛑 L'instruction `assert` est utilisée pour vérifier des conditions spécifiques, et éventuellement lever une `AssertionError` si la condition n'est pas respectée.
- 💡 Il est recommandé d'utiliser des messages d'erreur clairs et précis pour aider les utilisateurs à comprendre ce qui s'est mal passé.
- 🚀 La création de ses propres exceptions est brièvement abordée, ce qui sera plus utile une fois que les concepts de classes et d'objets seront étudiés.
- 🔑 Les notions de base sur la gestion des erreurs en Python sont présentées, en préparation pour une compréhension plus approfondie des objets et des classes dans les prochaines sessions.
Q & A
Quel est le sujet principal de la séance numéro 9 en Python abordé dans le script ?
-La séance numéro 9 en Python traite de la gestion des erreurs, montrant comment sécuriser les programmes pour gérer les cas d'erreur possibles et adopter un comportement adéquat en cas de plantage.
Pourquoi est-il important de gérer les erreurs dans les programmes Python ?
-Gérer les erreurs est important pour éviter de laisser l'utilisateur dans une situation non souhaitable en cas de problème, et pour assurer un comportement approprié du programme même en présence d'entrées ou de situations inattendues.
Quel est le premier exemple de code abordé dans le script et quel est son objectif ?
-Le premier exemple de code demande à l'utilisateur son âge, avec l'objectif de montrer comment gérer une erreur potentielle si l'utilisateur ne saisit pas un nombre mais un texte.
Quel est le problème avec la première approche de gestion des erreurs utilisée dans l'exemple de code ?
-La première approche ne vérifie pas le type d'entrée de l'utilisateur, ce qui peut causer un plantage du programme si l'entrée n'est pas un nombre, comme expliqué dans le script.
Que sont les exceptions et comment elles sont-elles liées aux erreurs de programme ?
-Les exceptions sont des erreurs spécifiques levées par l'interpréteur Python lorsqu'il détecte une erreur d'un certain type. Elles sont liées aux erreurs de programme car elles permettent au programme de gérer de manière appropriée les situations d'erreur.
Quel est le rôle du bloc 'try' et 'except' dans la gestion des erreurs Python ?
-Le bloc 'try' permet d'essayer une instruction ou un ensemble d'instructions qui peuvent potentiellement lever une exception. Le bloc 'except' est utilisé pour gérer l'exception levée, en spécifiant une action à entreprendre si une exception se produit.
Pourquoi est-il recommandé de ne pas utiliser 'except' sans préciser le type d'exception ?
-Ne pas préciser le type d'exception avec 'except' peut masquer des erreurs ou des problèmes sous-jacents, et rend le débogage plus difficile. Il est préférable d'être spécifique pour comprendre et gérer correctement le type d'erreur rencontré.
Quels sont les différents types d'erreurs mentionnés dans le script et quels sont-ils liés ?
-Les types d'erreurs mentionnés sont 'ValueError', 'TypeError', 'ZeroDivisionError', et 'OSError'. Ils sont liés à des situations spécifiques comme la saisie d'une valeur incorrecte, une incompatibilité de type, une division par zéro, et des erreurs système respectivement.
Quel est le but de l'instruction 'assert' utilisée dans le script ?
-L'instruction 'assert' est utilisée pour vérifier une condition; si la condition n'est pas vraie, elle lève une 'AssertionError'. Elle permet de s'assurer que certaines conditions sont remplies, généralement utilisée pour le test de code.
Quels sont les avantages de la gestion des erreurs en utilisant 'try', 'except', 'else', et 'finally' ?
-La gestion des erreurs avec 'try', 'except', 'else', et 'finally' permet de rendre le code plus robuste et plus facile à maintenir. 'Try' et 'except' gèrent les erreurs, 'else' s'exécute si aucune erreur n'est levée, et 'finally' s'exécute toujours, peu importe le résultat, ce qui est utile pour le nettoyage ou le finalisation des actions.
Outlines
🐍 Gestion des erreurs en Python
Le paragraphe introduit la gestion des erreurs dans Python, expliquant l'importance de sécuriser les programmes pour gérer les exceptions et éviter les plantages. Il donne un aperçu des exceptions courantes telles que ValueError et TypeError, et insiste sur la nécessité de ne pas faire confiance aux entrées de l'utilisateur, soulignant que toute entrée doit être vérifiée. L'exemple donné est une fonction qui demande l'âge d'un utilisateur et montre comment une mauvaise entrée peut causer une erreur de type ValueError.
🔄 Utilisation de try-except pour gérer les erreurs
Ce paragraphe explique le fonctionnement de l'instruction try-except en Python pour gérer les erreurs. Il montre comment utiliser try pour encapsuler le code potentiellement problématique et except pour gérer les exceptions levées. L'exemple illustre comment demander à l'utilisateur de saisir un âge valide et comment afficher un message d'erreur si la saisie n'est pas un nombre entier.
📘 Ajout de précision dans la gestion des exceptions
Le texte expose l'intérêt d'être précis dans la gestion des exceptions en spécifiant le type d'erreur attendue. Il montre comment cumuler plusieurs instructions except pour gérer différents types d'exceptions. L'exemple donné est une division par un nombre saisi par l'utilisateur, où il est important de gérer les erreurs de type ValueError (saisie non numérique) et ZeroDivisionError (division par zéro).
🛠 Création de propriétés d'exception personnalisées
Dans ce paragraphe, l'enseignant explore l'idée de créer des exceptions personnalisées pour gérer des cas spécifiques, comme un exemple d'inventaire qui ne peut pas dépasser un certain nombre d'objets. Il explique comment utiliser le mot-clé 'raise' pour lever une exception et donne un exemple de comment cela pourrait être utilisé dans un programme de jeu vidéo.
📑 Comprendre le concept d'assertion en Python
L'enseignant introduit le mot-clé 'assert' utilisé pour effectuer des tests de conditions dans le code. Il explique que si la condition de l'assertion n'est pas vérifiée, une 'AssertionError' est levée. Il donne un exemple où l'âge d'un utilisateur doit être supérieur à 25 ans, sinon l'assertion échoue et une erreur est levée.
⚠️ L'importance de la clarté dans les messages d'erreur
Le paragraphe insiste sur l'importance d'avoir des messages d'erreur clairs et précis pour aider à comprendre pourquoi un programme a échoué. Il explique que les messages d'erreur généraux ne sont pas utiles et peuvent masquer la véritable cause d'un problème, en particulier lorsqu'on gère des exceptions avec un bloc except sans spécifier le type d'exception.
🔚 Conclusion sur la gestion des erreurs en Python
Le dernier paragraphe conclut la session en résumant les points clés sur la gestion des erreurs en Python. Il encourage à utiliser try-except pour tester le code sensible, à affiner la gestion des erreurs avec les types d'exceptions, à utiliser else pour les cas de succès et à utiliser finally pour le code qui doit s'exécuter dans tous les cas. Il mentionne que ces bonnes pratiques seront particulièrement utiles dans la suite de l'apprentissage de Python, en particulier lors de l'étude des objets.
Mindmap
Keywords
💡Erreurs
💡Modularité
💡Try-Except
💡Exception
💡ValueError
💡ZeroDivisionError
💡Type Error
💡AssertionError
💡finally
💡Modèle de gestion des erreurs
Highlights
Introduction à la gestion des erreurs en Python pour sécuriser les programmes.
Importance de la modularité et de la gestion des erreurs pour prévenir les plantages.
Explication de l'instruction 'try' et son rôle dans la détection des erreurs.
Utilisation de 'except' pour gérer les exceptions levées par l'interpréteur.
La différence entre les types d'exceptions comme 'ValueError' et 'TypeError'.
L'importance de ne pas faire confiance aux entrées de l'utilisateur.
La règle d'or en informatique de toujours vérifier les données entrantes.
Démonstration du casting de types et ses risques avec l'instruction 'input'.
Comment utiliser 'try' et 'except' pour gérer un cas d'erreur spécifique.
Explication de l'instruction 'else' dans le contexte des blocs 'try'/'except'.
L'introduction de 'finally' pour exécuter du code indépendamment du résultat.
La gestion des erreurs pour améliorer l'expérience utilisateur.
Utilisation de 'assert' pour effectuer des tests et lever une 'AssertionError'.
La différence entre lever une exception avec 'raise' et la gestion des exceptions.
Création de ses propres exceptions pour gérer des cas spécifiques.
La nécessité d'être précis dans les messages d'erreur pour aider à la débuggage.
Conclusion sur l'importance de la gestion des erreurs dans le développement Python.
Transcripts
[Musique]
bonjour à tous bienvenue pour cette
séance numéro 9 en python on va voir
comment gérer les erreurs maintenant que
vous savez comment fonctionne un petit
peu tout ce qui est fonction modularité
on a vu on a passé pas mal de temps mine
de rien à expliquer un peu toutes ces
notions on va voir comment bah on va
dire sécuriser un petit peu plus nos nos
programmes faire quelque chose d'un peu
plus sérieux pour gérer quelques cas
d'erreur possible et pouvoir voilà
adopter un comportement adéquat en cas
d'erreur en cas de plantage d'un
programme plutôt que de laisser bêtement
l'utilisateur dans une situation pas
forcément voulue on regarder comment ça
fonctionne on vaendre un exemple de code
qui pourrait très bien arriver qui
pourrait quelque chose de tout à fait on
va dire courant dans justement dans
l'exécution d'un programme en python je
vais prendre un âge utilisateur on
mettre ex un petit input on va demander
tout simplement quel âge
as-tu ge dessus voilà vous êtes d'accord
avec moi que on s'attend à avoir un âge
donc on attend à ce que la personne
rentre un nombre et pas commence à
rentrer son prénom je ne sais quoi donc
nous on avait vu très rapidement puce
qu'on commençait pas à gérer les erreurs
pour le début histoire de pas trop
compliquer les choses on faisait
directement le fameux cast vous vous
rappelez je vous avais dit vous faites
un petit cast comme ça de l'âge comme ça
voilà vous êtes sûr que c'est bien
considéré comme un nombre et pas comme
une chaîne puisque la fonction input
elle prend elle lit absolument tout au
clavier comme étant une chaî de
caractère et pas un entier donc on fait
le petit cast après on avait juste à
faire un print en disant tu as on
mettez en d'accord donc là on va
tester mince cétait pas ça
python voilà quel âge as-tu d'accord et
vous mettez l'âge d'ailleurs
hop on va virer
les les petits accents enfin les petits
espaces par pardon
voilà parfait
vérifier d'accord donc ça fonctionnait
il y avait pas de souci le problème
c'est que dans ce genre de cas on ne
vérifie absolument rien tout simplement
parce que je peux faire
ça et vous voyez que ça plante ça plante
complètement on remarque alors ça on
l'IT pas on l'avait pas spécialement
détaillé jusqu'à présent on voyait
simplement qu'il y avait une erreur là
il vous met oui que c'est un donc une
valeur en fait qui est incorrecte par
rapport à un entier puisqueon note un
texte et il vous met un mot ici qui est
super important d'ailleurs vous voyez il
est représenté par un mot avec une
majuscule et ensuite le mot error
commence par une majuscule vous avez des
value error vous avez des type error
vous avez des zer division error vous
avez vous aurez même des os error des
type error et cetera et cetera ce sont
des exceptions notamment des types
d'exception qui ont été levé par par le
l'interpréteur ça veut dire qu'il a
remarqué une erreur d'un certain type et
il a lev une exception pour vous dire ah
P il y a une erreur de tel type et je
t'affiche un petit M message pour te
dire quoi donc ça vous êtes d'accord que
admettons quelqu'un là voudrait exécuter
votre programme s'il tombe sur ce genre
d'erreur c'est pas propre du tout pour
le développeur c'estit très bien il voit
où est le problème et cetera pour le
l'utilisateur ça va pas du tout parce
que bah il a une erreur de qu'on
pourrait penser même presqueà une erreur
de codage alors que non votre code en
fait il est correct il est tout à fait
correct hein je veux dire au niveau de
la syntaxe et cetera il y a pas de bug
en fait dans ce programme c'est juste
que vous ne gérez pas un cas d'erreur
possible qui peut très vite arriver
parce qu'il y aura bien un jour un malin
qui va noter du texte alors vous
demandez un âge donc on est obligé de
vérifier ça le problème il se situe au
niveau du cast c'est-à-dire que là j'ai
essayé de transformer en nombre entier
le un prénom tout simplement c'est juste
pas possible donc dans la mesure où vous
avez une instruction surtout utilisateur
parce qu' faut la règle la règle
premièreinatique c'est ne jamais faire
confiance à l'utilisateur de toujours
tout vérifier alors ça peut être un
utilisateur ou une information que vous
avez récupéré d'une base vous avez
récupéré par exemple d'une requête ou
autre he d'accord d'un fichier ou
n'importe quoi tout ce qui aurait pu
être corrompu modifié par un utilisateur
ou ou par un tiers doit être absolument
vérifié ça c'est une règle d'or en
informatique sinon bah c'est comme ça
qu'on s'expose à des des problèmes dans
de sécurité si ce n'est plus grave donc
nous cette ligne est embêtante puisqueon
a rien vérifié on a vraiment pas vérifié
ce genre de chose donc la première chose
à faire c'est la base on va dire si
vraiment il fallait gérer à la base de
la base de la base un cas d'erreur
possible dans un programme c'est
d'utiliser une fameuse un fameux jeu
d'instruction ce qu'on appelle le try
except donc on va en parler alors pour
d'autres langages ce serait le try catch
mais là on parle vraiment de try Excel
vous allez voir comment ça fonctionne
donc try ça veut simplement dire essayer
en anglais c'est pas compliqué vous
mettez try de points et nous ce qu'on
veut essayer c'est ce fameux cast on est
d'accord parce que il est possible que
ce cast ne puisse pas fonctionner si
vous mettez un nom cast un nom c'est
impossible en entier en tout cas je
parle vraiment en entier on essae ça et
on va utiliser le mot except pour
exception donc on va dire dans le cas où
tu lèves une exception qu'est-ce que tu
fais donc moi je veux pas qu'il
m'affiche cette ligne la value error
n'importe quoi donc de la base si on est
quelqu'un de feignant qu'on a vraiment
pas envie de commencer à gérer des
erreurs de manière particulière à
refaire une boue pour redemander l'âge
et cetera admettons B on peut mettre au
moins un petit print ne serait-ce que ça
pour dire l'âge indiqué est incorrect
c'est vraiment la base on va mettre un
point d'exclamation parce qu'on est
vraiment pas content voilà on va
relancer le programme si je mets 24 par
exemple vous voyez que le programme se
passe sans encombre et si je fais le
petit malin en mettant une chaîne de
caractère il me dit que l'âge indiqué
est incorrect ok donc voilà déjà on a
quand même géré on a plus cette espèce
d'erreur toute moche alors il y en a qui
vont me dire ou on a quand même le print
qui se fait à la fin bien évidemment
donc si on se contente on se contente
pardon du minimum on va le mettre ici
puisqueon essae là d'afficher une donnée
qui a pu être corrompue à cause de ce
fameux cast par la suite donc si on veut
être vraiment je vous dis le plus
feignant ça c'est la méthode feignante
j'ai envie de dire on va faire dans cet
ordre là donc là pas de souci d'accord
et là évidemment il affiche simplement
que làâage indiqué é correct donc là au
moins c'est propre on a une erreur le
programme s'est arrêté bon tant pis on
aura peut-être plus à la rigueur
redemander l'âche plutôt que de quitter
bêtement mais pourquoi pas ça fonctionne
au moins ça évite d'afficher un truc un
peu bizarre avec ligne un tel machin ça
planté et cetera ça fait vraiment pas
très professionnel en tout cas donc ça
c'est le minimum on peut maintenant
gérer euh également d'autres
fonctionnements parce que là vous avez
vu que le fameux h de l'utilisateur je
le faisais ici en général on
utilise le mot else oui on l'ajoute ici
on met else et on va mettre là pour dire
que tu essayes un certain nom
d'instruction en général c'est une seule
chose qu'on fait en général on fait un
try un bloc try et cetera pour une seule
instruction des fois ça peut être
plusieurs mais en général c'est beaucoup
comme ça on essaie dans quelque chose où
on sait que ça peut voilà ça peut mal se
passer par rapport à l'utilisateur ou
autre chose une lecture de fichier ou
n'importe quoi par exemple ouvrir un
fichier on devrait normalement le tester
comme ça on devrait dire j'essaie
d'ouvrir un fichier si on voit que ça va
pas marché ça aura levé une exception à
priori et dans ce cas-là on peut la
gérer donc qui fait ça tu essayie de
caster l'âge d'utilisateur si tu n'y
arrives pas enfin si tu lèves une
exception alors là voyez j'ai pas parlé
de type on verra ça après si tu relèves
une exception pe importe laquelle donc
n'importe laquelle exception tu affiches
ça sinon c'est qu'à priori ça s'est bien
passé donc tu affiches ça donc là on va
obtenir le même résultat que tout à
l'heure voyez là j'ai indiqué é correct
et si je mets ça
d'accord ça fonctionnera donc au niveau
exécution on ne voit aucune différence
par contre au niveau codage c'est plus
propre de fonctionner comme ça et on a
un 4ème type de mot alors on n'est pas
obligé de tous les mettre d'accord le
minimum c'est ça try except d'accord par
que vous voyez que le LSE au début je
l'avais mis là dedans c'est pas
forcément très propre mais pourquoi pas
on peut aussi avoir un
finally qui veut simplement dire que
dans tous les cas tous les cas de figure
peu importe ce qui s'est passé tu
m'afficheras ce qu'il a dans le finally
ça veut dire finalement en vrai tu me
fais dans tous les cas ça donc nous on
peut mettre on va rester très simple on
va mettre fin du programme par que je
veux dans tous les cas annoncer que le
programme il se termine
ok
voilà et là pareil peu importe ce que je
note
hein on obtient absolument bah le
finally est toujours toujours exécuté
tout ce qui se passe dans ce bloc là
voilà donc ça c'était les mots à
connaître je dis le minimum c'est try
accept et ensuite vous avez le el pour
ce qui se passe en cas de réussite et le
finally c'est ce qui a exécuté dans tous
tous les cas de figure d'accord donc
mettre h je mets toujours des petites
notes gér les exceptions c'est histoire
d'avoir les les mots try except ça
c'est l'obligatoire j'ai envie de dire
et on peut éventuellement avoir le else
le finally et voilà ça c'est des choses
en plus que l'on peut effectivement
compter au niveau des véf iation alors
moi dans mon cas le problème c'est que
là je lui dis d'afficher que l'âge
indigué est correct si par exemple il
lève une exception le problème c'est que
bon là dans ce caslà ça va pas lever
15000 exceptions différentes vous avez
vu tout à l'heure d'ailleurs ça levit
une value error donc normalement par
qu'il y a des cas où ça pourrait lever
plusieurs exceptions une ligne
différente où je sais pas ça pourrait
être embêtant B on va on va reprendre le
code différemment on va faire ça on va
faire calcul
qu'est-ce qu'on peut
faire nombre on mettre nombre alors je
vais faire des choses en dur je vais pas
les demander en je vais pas les demander
forcment utilisateur on va dire qu'on a
un nombre je sais pas pourquoi c'est
comme ça c'est tout bête nombre 150 dans
tous les cas et pour le nombre 2 on va
le demander dire on a demander les de
nom mais c'est histoire de pas rajouter
trop de input et ce choisir le
nombre pour diviser pour
diviseril OK là je vais faire du coup
alors nombre 2 bon nombre 1 il est déjà
en int parce que c'est marqué ici je
l'ai affecté directement avec une valeur
enure donc on est sûr que c'est un
entier et ici je vais lui dire tu forces
avec un casque comme on aurait fait
avant ensuite tu fais je sais pas moi tu
fais allez ou print de je sais pas moi
résultat égal on va utiliser format
histoire de changer un petit
peu format de nombre 1 divisé par nombre
2 normalement ce code là devrait être
tout compréhensible pour vous he s'il y
a quelque chose de compliqué dans ce que
j'ai noté revoyez les vidéos d'avant
histoire de pas vous perdre ou de pas en
tout cas bah avoir des lacunes en fait
dès le début ça sera un petit peu
dommage pour vous donc normalement tout
ça est clair tout ça a été vu en tout
cas dans les vidéos précédentes donc on
fait simplement une première variable
qu'on affecte en dur on premiè une
deuxième variable pardonù on va demander
à stocker une valeur à l'utilisateur
ensuite on la casse celle-ci donc plutôt
pour être plus voilà plus exact et
ensuite on affiche le résultat de cette
division d'accord on va tester donc là
normalement si vous AZ réfléchi vous
voyez qu'il y a plusieurs possibles
erreurs qui peuvent arriver dans genre
de programme choisir le nombre divisé
normalement tous les matateux ont penser
au zéro vous savez tous que la division
par zéro n'est pas possible si j'essaie
de diviser par zéro BIM j'ai un zé
division error division par zé c'est
interdit en mathématique ça n'existe pas
donc j'ai un type d'exception mais
qu'est-ce qui se passe si je mets ça
est-ce que ça va me faire une zé
division error bah non parce que
j'essaie de diviser par un texte donc là
j'ai une value error vous voyez alors si
on est trop feignant d'accord on va
procéder de cette manière on va faire
ça donc
try on va dire j'essaye mon cast
d'accord comme on a fait tout à l'heure
on va dire en cas d'exception parce que
on a pas envie de se prendre trop la
tête on va dire je sais pas moi alors
bon le nombre ê incorrect bah ça veut
pas forcément mettons on va dire voilà
la personne le développeur s'est dit
ouais dans ce calcul là comme jeà je
connais bien les maths je sais qu'on
peut pas diviser par zéro donc je dis
que si ça une exception c'est que la
personne a essayé de diviser par zéro
donc je mets par exemple vous ne pouvez
pas diviser par zéro d'accord admettons
donc pas de souci le mec il pense qu'il
a géré son erreur le développeur pas de
problème on teste le programme bon
effectivement s'il tombe sur quelqu'un
qui fait ça d'accord alors déjà oui euh
division par euh c'est pas ça le
problème effectivement euh on va plutôt
mettre là puisque c'est ça qui lève
l'exception c'est pas le cast en fait
voilà c'est ça parce qu'en fait ça c'est
deux choses ça ça peut ça peut faire
lever une value error du fait qu'on
essaie de caster en entier un un texte
et le calcul ici peut faire lever une
zéro division erreor donc on va mettre
les deux parce que ces deux lignes
peuvent peuvent faire lever une
exception et vous allez voir où est le
problème si on n'est pas assez précis
donc effectivement celui qui va faire ça
vous ne pouvez pas diviser par zéro on
va se dire yes il a bien indiquer le
problème qu' avait ouais mais moi en
fait j'ai fait ça j'ai mis du texte et
on me dit vous ne pouvez pas diviser par
zé bah le le le message que l'on me
donne il a rien à voir avec ce que j'is
avant j'ai pas essayé de diviser par
zéro j'ai essayé de mettre du texte donc
vous voyez on n'est pas assez précis
donc c'est pour ça que l'on peut
préciser le type d'exception donc là moi
je vais mettre en cas de 0 division
error ça se met d'ailleurs en jaune vous
reprenez en fait le nom que vous voyez
là qui s'affiche dans les exceptions pas
besoin de les apprendre par cœur hein
come PZ pas à prendre tous les noms des
types d'exception par cœur vous allez au
pire sur la doc Python ou alors vous
faites comme moi vous provoquez l'erreur
il va vous donner le nom d'accord c'est
pas des choses qu'on apprend par cœur
les nom d'exception après on finit par
les retenir naturellement bien sûr mais
il y en a tellement que vous pourrez pas
forcément tout retenir par cœur même
s'il y en a qui reviennent assez souvent
donc le zé division error voilà comme ça
je lui dis s'il y a cette exception là
qui tombe qui est levé tu fais ce print
et on peut les cumuler on peut mettre
plusieurs except si tu as une value
error c'est seulement dans ce cas que tu
me dis vous devez entrer par exemple un
nombre d'accord et on peut si on veut
être très précis mettre bah s'il y avait
une autre exception qui se levait ça
peut arriver admettons j'en sais rien
moi personne pourrait faire un truc au
niveau de la C du programme qui ferait
une autre exception peut-être une error
ou j'en sais rien et on met à ce
moment-là voilà print valeur incorrecte
par exemple parce qu'on sait pas à quoi
ça'attendre comme erreur ici on sait pas
qu'est-ce qui aura provoqué cette
exception là qu'on ne connaît pas
celle-là on sait pourquoi elle peut
arriver donc on sait qu'est-ce qu'on
doit indiquer à l'utilisateur celle-là
on sait pourquoi donc on sait quoi
indiquer aussi par contre ici on sait
pas comment il en arrié là donc on lui
dit tout simplement valeur incorrecte OK
et là en faisant ceci si je divise par
zéro vous voyez qu'il me je ne peux pas
diviser par zéro il est bien rentré par
l'exception ici et en revanche si je
mets un texte il me dit vous devez
rentrer un nombre et si mais là je vois
pas bon ce que je pourrais noter je sais
pas peut-être des tabulations peut-être
non c'est un nombre donc il prend pas
voilà pour lui c'est desvu error donc
honnêtement je ne sais pas je sais pas
comment je pourrais voilà là voyez bon
j'ai un keyboard inter parce que j'ai
fait un contrôle C mais ça rien à voir
avec ça donc non j'ai pas enfin voilà il
y a peut-être moyen de faire une autre
une autre de provoquer une autre
exception donc au moin on l'a prévu dans
tous les cas et après on peut rajouter
si ça se passe bien d'accord genre bravo
tu as réussi bravo tu as noté un nombre
valide
admettons et puis le finally bon comme
j'avais dit tout à l'heure on peut sans
problème le cumuler aussi hein d'accord
voyez on peut tout
cumuler
voilà voilà et si je fais ça
d'accord donc tous les cas sont gérer
d'accord alors l'ordre he parce que
çachez qu'un accient qui V me poser la
question ici l'ordre vous pouvez mettre
celui que vous voulez d'accord python
c'est un un interpréteur donc il va
faire ligne par ligne il va à la rigueur
vous pouvez mettre éventuellement pour
optimiser un petit peu celui qui a plus
de chance d' arriver pourquoi pas donc
honnêtement je pense CELI a plus de
chance d'arriver c'est le value
quelqu'un qui noterait pas un nombre
puce qu'en général les gens savent qu'on
peut pas diviser par zé en général donc
vous pouvez par exemple inverser mais
l'ordre n'a pas d'importance que Python
va aller ici va voir si ça rentre dedans
ou pas si ça ne rentre pas il passe à la
suivante à la suivante ça bah il le fera
pas s'il est rentré dans un seul d
except il va directement sortir et s'il
y a un finally avant de sortir il va
passer par le finally dans tous les cas
ça c'est tout le temps c'est il fait le
try obligatoire ensuite il vérifie
toutes les exceptions jusqu'à la
dernière s'il est rentré dans aucune il
va dans le els s'il est rentré dans une
bah il fait ce qu'il y a dedans et à la
fin de sortir de toute cette ce bloc il
fait le finally et seulement après il
revient au programme principal vous
voyez tout se suit tout s'enchaîne en
fait dans l'ordre ça s'enchaîne sans
problème naturellement il y a pas de
souci voilà comme ça on gère vraiment
les erreurs de manière correcte avec des
noms précis de type d'erreur plutôt que
d'avoir un message général en excepte
tout court donc on évite rarement
d'utiliser le except tout court comme ça
sauf quand vraiment on veut voilà on
fait son petit programme dans son coin
qu'on a pas envie de perdre de temps
mais gérer un minimum les erreurs c'est
ce qu'on va faire mais quand on va être
précis proposer un distribuer un
programme on essaie d'être très précis
dans les messages là on comprend tout de
suite pourquoi ça a planté là c'est
parce que la personne a bien essayé de
diviser par zéro là c'est parce qu'il a
pas rentré apparemment un nombre c'est
effectivement le cas si on regarde ce
qui a été saisi d'accord donc faut
vraiment que le message soit clair si
vous devez indiquer une erreur
indiquez-la de manière claire faut qu'on
comprenne pourquoi la la personne s'est
plantée sinon je vois pas l'intérêt ça
n'a aucun intérêt donc voilà vous savez
pour try except le else le finally et
comment com comment vous allez dire
comment zérer on va dire les types
d'exception donc je vais mettre je vais
vous en mettre quelques-uns quand même
si vous voulez des noms alors on a le
value error on peut avoir si par exemple
vous essayez de d'indiquer une variable
qui n'existe pas qui est pas définie on
va avoir un name error vous avez le Z0
division
error pour des erreurs systèm vous allez
avoir le os error qu'on trouve plus
rarement quand même et vous allez avoir
mais ça on va le voir juste après le
assertion error voilà ça c'est alors
j'en oublié un pardon ici plutôt pour
les types de varibles type error voilà
ça c'est les standards c'est ceux qu'on
va retrouver le plus souvent os error un
petit peu moins quand même mais vraiment
voilà ces trois là de toute façon c'est
très récurrent celui-là bah en cas
division par zéro bien évidemment et
celui-là on va en parler juste après
donc vous allez voir à quoi il
correspond voilà voilà alors ça on a
tout vu normalement pour les exceptions
et cetera alors oui donc là on avez vu
comment tout simplement gérer une
exception qui a été levée alors
qu'est-ce qu'on entend par levé bah vous
imaginez moi je prends je donne toujours
cette exemple là quelqu'un donc il a vu
un problème d'accord il va noter sur un
ballon le souci et il va le un ballon de
baudruche et il va le laisser s'envoler
d'accord donc il lève l'exception il
laisse le ballon s'envoler et il en
attend que quelqu'un le capture
l'attrape d'accord attrape l'exception
qui a été levée donc si personne
l'attrape bah tant pis c'est ce qui se
passait au début de no programme sans
avoir de try except c'est-à-dire bah
qu'on a un gros plantage avec un message
tout moche dans le terminal et si
quelqu'un heureusement l'a attrapé ben
on peut gérer voyez ici bah là on a
attrapé des exceptions en division par
zéro ici on attrape une exception de
type voilà par rapport à la valeur et là
on attrape tous les toutes les autres
types d'exceptions qui pourraient
intervenir ou subvenir enfin survenir en
tout cas pendant l'exécution donc on
gère absolument tout maintenant et ça ce
sera surtout utile quand vous apprendrez
à créer vos propres tites d'exception
parce que oui avec l'objet vous pourrez
créer vos propres classes et créer vos
propres exceptions donc vous pourrez
créer je sais pas moi comment dire
inventaire inventory error pour gérer un
inventaire ou n'importe quoi ou fight
error je sais pas une exception par
rapport à un combat dans un je je prends
toujours des exemples dans un jeu vidéo
he toujours par que c'est quand même
c'est quand même le ce qui est le plus
clair pour tout le monde donc on
pourrait inventer ça et peut y avoir
dans certains cas l'intérêt de lever
nous-mêmes les erures parce que là vous
voyez qu'à chaque fois c'est Python qui
le fait mais le problème c'est que
Python bon bah lui voilà il connaît il
manipule des nom et cetera ça il sait
faire mais il se pourrait que dans
certains cas dans votre programme vous
ayez vous vous savez en fait dans un
algorithme que vous avez fait qu'il y a
possibilité qu'à un moment donné votre
algorithme puisse lever une exception
mais c'est pas dit que Python il va la
trouver alors si c'est une exception
standard il va l'avir forcément par
contre si c'est une exception précise je
sais pas si à mettons dans un jeu vidéo
je sais pas moi vous estimez par exemple
que la personne à CH fois vous avez un
personnage d'accord qui gère un
inventaire et il peut pas avoir plus de
10 objets dans l'inventaire pour Python
il y a pas de il y a pas de type de
d'exception qui disent par exemple bah
vous avez essayé de porter plus de 10
objets dans votre inventaire on est
d'accord ça n'existe pas par contre vous
par la suite vous pouvez très bien créer
un type d'exception al ce serait un peu
bizarre pour l'exemple que je donne mais
pourquoi pas on peut peut tout imaginer
en informatique
de faire une exception par exemple vous
avez dépassé entre guillemets votre
quota de d'inventaire d'objet portter un
inventaire et en faisant ça vous
pourriez lever une exception je sais pas
moi par exemple inventory MT error qui
voudrait dire que l'inventaire est plein
et du coup bah ça affichera un message
comme quoi votre votre sac est plein
votre inventaire est plein vous pouvez
pas porter d'objets supplémentairire
vous voyez un petit peu le le
cheminement du coup ça peut être super
intéressant donc ce que je vous montrer
c'est juste pour les la syntaxe ça va
pas être utile à l'heure d'aujourd'hui
pour ce que vous avez vu mais retenez-le
parce que ça servira par la suite quand
vous ferez vraiment vos propres types
d'exception donc pour lever une
exception je vous le montre c'est qu' en
un seul mot ça va être simplement de
faire un raise on va faire un truc tout
bête je vais mettre ge alors ce que je
vais vous montrer sert absolument à rien
c'est vraiment juste pour montrer au
niveau syntaxe bêtement comment on les
crrit en fait comment on fait une levée
d'exception nous-même à la main quel âge
as-tu voilà on va faire un alors je fais
même pas une vérification d'accord c'est
juste pour vous montrer et là je vais
faire un raise euh je sais pas moi non
je va faire pas pas ça je vais plutôt
faire if
âge plus petit que allez plus petit que
25 je sais pas pourquoi c'est vraiment
tout bête comme exemple je vais lever
donc on utilise le mot clé raise et je
choisis le type alors là normalement
quand on a créé nême une exception on
mettrait ce que je vous avais dit par
exemple
inventory alors j' mis MT mais c'est pas
c'est pas vide en fait oui c'est full
plutôt et cetera comm quoi il est plein
enfin peu importe que MT c'est pour VI
donc je vous dis inventory MT pour vous
dire que l'inventaire est plein non
c'est plutôt l'inverse MT c'est pour
vide bref donc inventory par exemple
error donc vous voyez là il met pas en
jaune parce que ça n'existe pas
évidemment python donc on pourrait créer
quelque chose comme ça mais regardez ce
qui est assez bizarre vous allez me dire
pourtant ça n'a absolument rien à voir
parce que je fais pas de division mais
je peux sans problème faire ça d'accord
alors normalement si je mets tout seul
ça va être un peu bizarre d'accord par
que je vais noter n'importe quoi il va
mettre il va mettre rien du tout
effectivement que je suis audessus de 26
si je mets 16 là vous voyez qu'il me met
une zé division error c'est dire
pourtant j'ai ça a pas du tout fait une
division par zéro c'est vous qui l'avez
levé en fait d'accord on peut même
mettre un petit message si on veut
voilà d'accord alors il vous affiche ça
comme ça donc ça sert à rien mais voilà
mais ça c'est le fameux petit message
qui vous affiche quand c'est piton qu'il
fait lui-même d'accord et du coup B on
peut on peut y aller si on fait par
exemple je sais pas
moi qu'est-ce qu'on peut
faire on va faire bah si on va faire ça
on va faire un try on va dire donc l'âge
et cetera voilà et ensuite si là j'ai
plus petit 25 tu lèves l'exception 0
division er et comme on peut lever
l'exception vous savez qu'on peut la
capturer aussi avec un except donc je
peux faire alors là bienvidment ça n'a
aucun sens ce que jeis c'est pas à faire
du tout je vous le dis c'est juste pour
vous montrer comment enlève une
exception et ben on peut dire j'ai j'ai
attrapé voilà j'ai attrapé ton Pokémon
comme comme un Pokémon en fait j'ai
attrapé ton exception inutile parce que
bah là de toute façon on fait une zé
division error ça n'a rien à voir mais
c'est juste pour montrer que ça
fonctionne vous voyez voilà on a levé un
type d'exception reconnu par python donc
on peut bien évidemment faire comme on a
fait au début c'est le capturer avec un
except et gérer le cas de figure ça
fonctionne mais ça le raise ça vous
servira à rien pour le moment ce sera
vraiment utile quand vous créz vous
allez créer vos propres tit d'exception
là à l'heure actuelle vous en aurez pas
besoin vous aurez juste besoin de faire
des try pour tester certaines parties du
code sensible et avec les les except
finally Lesse et cetera de gérer les cas
d'erreurs possies et en cas de succès et
cetera ça c'est utile et on va terminer
cette vidéo hein pour pas faire trop
Tron par qu'on aura vu déjà pas mal pas
mal de choses je trouve ça vous a ça
vous faire beaucoup beaucoup de choses à
revoir et on va voir également comment
gérer tout ce qui est assertion alors
une assertion ça va être plus une pareil
ça va être un plus ou moins un test en
fait de où vous savez qu'il peut y avoir
un souci tout simplement dessus et on va
utiliser le mot- clé asserte comme ceci
d'accord une assertion en fait vous avez
c'est une instruction vous avez noter si
l'assertion que vous avez alors ça peut
permettre notamment de faire des plus ou
moins des tests sur je sais pas moi sur
un calcul par exemple qui serait pas
possible ou autre il va lever une
exception àertion error celle que
j'avais noté ici d'accord et à partir de
là vous pourrez la capturer comme vous
voulez donc moi je peux très bien faire
euh je sais pas moi qu'est-ce que je
peux faire euh hm hm hm ben on va faire
ce qu'on a fait tout à l'heure justement
c'é c'est un bon exemple ça je vais
reprendre sur ce que j'avais tout à
l'heure âge ég
input quel
âge as-tu j'aurais pas dû l'effacer
d'ailleurs mais c'est pas grave voilà on
fait un âge de int de âge OK et là au
lieu de faire juste un IF je fais assert
â et je vérifie est-ce que là j'ai plus
petit
que 25
d'accord et à partir de là vous verrez
un petit peu ce qui se passe al
normalement quand on a ça on fait un
except quand même
voilà non peut-être juste déjà le faire
comme
ça je vais pas le faire dans un try
normalement je dois pouvoir juste le
faire tout seul après bon en général
c'est rare mais bon voir voilà quel âge
as-tu bon je note 26 déjà il vous met
assertion er effectivement puisque le
assert alors là je l'ai fait un autre
cas si je voulais reprendre le cas de
tout à l'heure j'aurais dû mettre le
symbole l'autre côté mais peu importe il
vous dit tout simplement ça tu lèves une
exception d'assertion donc une exception
comme ça si l'âge est plus petit que 25
là c'est effectivement le cas d'accord
j'ai rentré non c'est effectivement le
cas je dis n'importe quoi moi j'ai dis
des bêtises pardon j'ai fait 26 voilà
mais par contre comme c'est plus grand
en fait on ne passe pas dans laasserion
d'accord donc là HGE plus petit que plus
petit que 25 non oui oui non parce qu'il
est plus grand c'est 26 du coup il fait
setion error ok donc en faisant mon try
comme
ceci donc là dans mon cas d'ailleurs
j'aurais plutôt dû mettre ça voilà
l'ertion il a fait comme ça
euh toc toc toc donc ça c'est bon et
ensuite on va mettre le except et là
bien évidemment on va mettre le
assertion
error on va mettre voilà suis attraper
l'exception même si
bon on verra comme ça on va rester
là-dessus donc là j'ai inversé d'accord
hein les le signe là le la comparaison
si je mets 15 il vous dit que j'ai
attrapé l'exception d'accord voilà ça
veut dire qu'il essaye de voir que l'âge
est plus grand que 25 comme là l'âge est
plus petit que 25 on lève l'exception si
là j'avais
été plus euh grand que 25 26 pas de
souci d'accord alors là c'est un peu à
l'envers pour ça voyez des fois Mme moi
c'est pareil je fais attention à ce que
je dis pas me tromper pas vous dire une
bêtise ou vous ind en erreur l'asserion
c'est vraiment ce qui doit ce qu'on
attend en fait d'accord c'estd que là on
attend vous pouvez vous pouvez si vous
voulez ouais on peut plus ou moins
commenter comme ça
j'attends que âge enfin j'attends
j'attends ça fait genre j'attends genre
je fais une boucle le temps que ça se
passe non je veux que voilà que GE soit
plus grand que 25 c'est tout sinon bah
voilà je lève une exception mais bon je
va pas mettre de sinon ça fera un peu
long c'est ça qu'il faut comprendre le
Asert ça ve simplement dire je veux que
la condition qui vient après soit valide
si elle ne l'est pas tu me lèves une
assertion error d'accord comprenez-le
comme ça voilà je pense que ça sera
beaucoup plus clair comme ça dans ce
sens-l plutôt que comme j'avais expliqué
au début c'était pas forcément très très
compréhensible donc dans ce sens quand
vous avez le motcé à ser dites-vous
c'est on attend la condition qui suive
si elle est validée comme ici 26 bah tu
continues ce que tu fais hein d'habitude
si ce qui suit le mot assert ça n'est
pas validé et bien dans ce cas-là tu
fais une assertion error donc là il y a
pas de zé division error je sais pas
quoi non c'est assertion error ça permet
de le gérer comme ça alors c'était pas
facile de vous l'expliquer déjà parce
que bah on s inverse un petit peu au
niveau de la sertion par rapport au choy
ou dès qu'il y a une erreur PAF onlève
l'exception on la récupère là c'est
vraiment dans le cas où qu'est-ce qu'on
veut en fait comme condition et surtout
que bah je peux pas vous donner beaucoup
beaucoup d'exemples parce qu'encore une
fois on n pas encore vu vraiment la
partie objet du langage on n pas fait
d'objet de classe et cetera et du coup
on n pas vraiment parlé des exceptions
en tant queobjet donc c'est pas facile
de vous expliquer des choses le c'est ça
le problème du langage Python c'est que
c'est un langage objet complet donc même
tout ce que vous avez vu en procédura
plus ou moins en réalité vous manipulez
déjà des objet mais je peux pas
commencer directement à vous parler
d'objets sinon on compliquerait les
choses et puis voilà enfin ce serait
juste impossible à suivre pour certains
donc je suis obligé de procéder par ces
par les étapes pour commencer par le
plus simple et venir par la suite pour
bah vous expliquer voilà ça on
manipulait comme ceci comme cela parce
que c'était un objet qui était dessous
en fait donc c'est pas forcément simple
à à montrer mais je pense bon que là
maintenant vous avez compris
qu'effectivement au niveau du assert
c'est voilà c'est en bref j'exige que
âge soit plus grand que 25 sinon je vais
lever une assertion error d'accord faut
vraiment le comprendre comme ça donc
dans le cas où c'est bon ça va si c'est
pas bon évidemment on a une exception et
on peut la capturer également avec un
except ça fonctionnera voilà et puis
comme ça on a fait le tour globalement
normalement je vous ai fait un petit peu
le tour de tout ce qu' avait à voir en
tout cas à l'heure actuelle au niveau de
la gestion d'erreur donc vous savez
comment tester un code sensible avec le
try comment gérer toutes les exceptions
possible s'il le faut avec un simple
except après vous pouvez affiner votre
gestion d'erreur avec les fameux types
d'exception voir par rapport à ce qui
est provoqué en cas de réussite vous
pouvez mettre un petit else
éventuellement et bien évidemment si
vous avez un code que vous devez
exécuter dans tous les cas vous utilisez
le petit mot cl finally donc un bloc
finally ça fonctionnera aussi voilà donc
à partir de maintenant alors on le fera
pas forcément dans tout les vidéos
suivantes parce que vous voyez que ça
rajoute quand même pas mal de lignes de
code et que le but bon c'est de d'aller
à l'essentiel des notions que je vous
enseigne donc je mettrai pas forcément
des je va pas forcément gérer les
erreurs dans tous les codes que je vais
vous montrer par la suite j'essaierai de
le faire de temps en temps quand il y a
pas des choses trop trop longues mais la
plupart du temps je ne le ferai pas
alors si vous voyez que norement dans un
code je fais ceci par exemple sans
mettre dans un bloc try accept c'est pas
que c'est comme ça qu'il faut faire
essayez vous de prendre l'habitude quand
vous avez quelque chose comme ça où vous
savez que ça peut échouer ça peut lever
une exception de le mettre dans un bloc
accept prendre vraiment cette habitude
dès que j'ai une modification qui peut
entraîner une exception je le teste dans
un bloc comme ça on est sûr voilà de
gérer l'erreur en cas de problème au
minimum au moins avec un except tout
court d'accord au moins voilà minimum du
code je vous dis c'est
ça
d'accord ça c'est vraiment le minimum
minimum minimum vital comme ça on est
sûr qu'on a géré l'erreur dans tous les
cas plutôt que de faire simplement ça
sinon on va avoir des messages tout tout
bizarres dans le terminal c'est
forcément pas joli pas très pratique pas
bien pour l'utilisateur final qui lui
veut pas voir des lignes de code ou des
erreurs bizarres avec des nom des
numéros de lign et tout ça évidemment ou
des noms de d'exception il il n a rien à
secouer entre guillemets de des noms
d'exceptions et cetera il est pas
développeur c'est vous le développeur
donc l'utilisateur lui doit avoir un
texte dans la langue qu'il parle pour
comprendre l'erreur qu'il y a eu tout
simplement et bien on va s'arrêter ici
pour cette petite séance neu on se
retrouvera du coup pour la prochaine on
va pouvoir très rapidement maintenant
enfin parler d'objets c'est pour ça que
je voulais vraiment qu'on voie tout ça
qu'on parle de modularité qu'on voie
comment gérer les erreurs au minimum en
tout cas pour pouvoir commencer la
partie objet de Python donc à la suite
hein pour la prochaine séance on va
pouvoir vraiment démarrer là-dessus vous
allez voir toute la puissance de ce
langage comprendre pourquoi
effectivement on dit que c'est un
langage qui est tout objet que même le
fameux int là le integer donc les
entiers ce sont des objets tout en fait
tous tous sont des objets vos variables
et cetera ce sont également des choses
qui peuvent se comporter comme des
objets donc on regardera un petit peu
tout ça par la suite dans la prochaine
vidéo en attendant j'ai dis
entraînez-vous bien n'hésitez pas encore
une fois à commenter à poser des
questions s'il y a quelque chose qui est
pass c'est clair surtout que là on va
passer une autre on va dire une autre
étape de l'apprentissage du langage donc
si là vous avez des choses qui ne sont
pas tout à fait comprises ou qui sont
pas assez claires que c'est pas facile
hein de coder en direct en vidéo et de
vous expliquer en même temps c'est
vraiment pas pas facile comme chose donc
il peut je peux très bien avoir dit des
choses pas assez claires ou avoir parlé
un peu trop vite ou être passé un petit
peu trop vite sur certaines notions donc
n'hésitez pas à demander à poser des
questions s'il y a un moindre problème
j'y répondrai volontiers comme ça vous
serez vraiment paré pour la suite à très
bientôt tout le monde et on se retrouve
pour la prochaine
[Musique]
vidéo
浏览更多相关视频
Data Structures Explained for Beginners - How I Wish I was Taught
Tout comprendre sur les modèles ARVALIS, au cœur des Outils d’Aide à la Décision - ARVALIS.fr
J'ai utilisé ChatGPT tous les jours pendant 1 an — Voici ce que j'ai appris
Python #8 - modularité
Simuler la connexion entre ordinateurs avec Filius
Python #11 - classes et attributs
5.0 / 5 (0 votes)