Python #9 - gestion erreurs

FormationVidéo
16 Mar 201733:18

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

00:00

🐍 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.

05:01

🔄 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.

10:01

📘 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).

15:02

🛠 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.

20:04

📑 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.

25:04

⚠️ 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.

30:05

🔚 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

Les erreurs sont des problèmes qui se produisent lors de l'exécution d'un programme informatique, causant son arrêt ou un comportement inattendu. Dans la vidéo, la gestion des erreurs est abordée pour assurer une meilleure robustesse des programmes, en utilisant des structures de contrôle d'exception comme 'try', 'except', 'else' et 'finally' pour intercepter et gérer ces erreurs.

💡Modularité

La modularité fait référence à la capacité d'un programme à être structuré en modules indépendants, chacun ayant une fonction spécifique. Dans le script, la modularité est mentionnée comme un concept clé qui a été expliqué précédemment, important pour la compréhension de la gestion des erreurs dans des modules de code isolés.

💡Try-Except

Try-Except est une construction utilisée en Python pour gérer les exceptions. 'Try' permet d'essayer d'exécuter un bloc de code potentiellement problématique, tandis que 'except' permet de gérer les erreurs qui se produisent. Le script utilise cette structure pour montrer comment prévenir les plantages de programme.

💡Exception

Une exception est un type d'erreur ou d'un problème qui se produit lors de l'exécution d'un programme et qui interrompt le flux normal du programme. Le script explique comment utiliser des exceptions pour signaler et gérer divers types d'erreurs, comme les erreurs de type 'ValueError' ou 'ZeroDivisionError'.

💡ValueError

Le 'ValueError' est un type d'exception spécifique qui est levée lorsqu'une valeur fournie ne peut pas être utilisée par une fonction ou une opération. Dans le script, cela est illustré par l'exemple où l'utilisateur entre un prénom au lieu d'un nombre, ce qui déclenche cette exception.

💡ZeroDivisionError

Le 'ZeroDivisionError' est une exception levée lorsqu'un programme tente de diviser un nombre par zéro, ce qui est mathématiquement impossible. L'exemple dans le script montre comment utiliser un 'try-except' pour intercepter cette erreur et informer l'utilisateur appropriéement.

💡Type Error

Le 'TypeError' est une exception qui est levée lorsqu'un type inattendu est utilisé pour un opérateur ou une fonction. Dans le script, cela peut être vu dans le contexte de la conversion de types, où l'on attend un entier mais obtient une chaîne de caractères.

💡AssertionError

L'exception 'AssertionError' est levée lorsqu'une assertion échouée est rencontrée. Dans le script, l'assertion est utilisée comme un outil de test pour vérifier que certaines conditions sont remplies, sinon elle lève une 'AssertionError' pour signaler l'échec de la condition.

💡finally

Le bloc 'finally' est utilisé en Python pour du code qui doit être exécuté indépendamment de la réussite ou de l'échec d'un bloc 'try-except'. Dans le script, 'finally' est mentionné comme un moyen de s'assurer que certaines actions, comme le nettoyage des ressources, sont effectuées.

💡Modèle de gestion des erreurs

Le modèle de gestion des erreurs est un ensemble de pratiques utilisé pour gérer les exceptions et les erreurs dans un programme. Le script décrit comment utiliser les structures de contrôle d'exception Python pour créer un modèle de gestion des erreurs efficace, en interceptant et en gérant les erreurs de manière appropriée.

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

play00:00

[Musique]

play00:09

bonjour à tous bienvenue pour cette

play00:11

séance numéro 9 en python on va voir

play00:13

comment gérer les erreurs maintenant que

play00:15

vous savez comment fonctionne un petit

play00:16

peu tout ce qui est fonction modularité

play00:18

on a vu on a passé pas mal de temps mine

play00:19

de rien à expliquer un peu toutes ces

play00:21

notions on va voir comment bah on va

play00:23

dire sécuriser un petit peu plus nos nos

play00:25

programmes faire quelque chose d'un peu

play00:26

plus sérieux pour gérer quelques cas

play00:28

d'erreur possible et pouvoir voilà

play00:31

adopter un comportement adéquat en cas

play00:32

d'erreur en cas de plantage d'un

play00:33

programme plutôt que de laisser bêtement

play00:35

l'utilisateur dans une situation pas

play00:37

forcément voulue on regarder comment ça

play00:38

fonctionne on vaendre un exemple de code

play00:41

qui pourrait très bien arriver qui

play00:43

pourrait quelque chose de tout à fait on

play00:45

va dire courant dans justement dans

play00:47

l'exécution d'un programme en python je

play00:49

vais prendre un âge utilisateur on

play00:51

mettre ex un petit input on va demander

play00:55

tout simplement quel âge

play00:58

as-tu ge dessus voilà vous êtes d'accord

play01:03

avec moi que on s'attend à avoir un âge

play01:05

donc on attend à ce que la personne

play01:06

rentre un nombre et pas commence à

play01:08

rentrer son prénom je ne sais quoi donc

play01:10

nous on avait vu très rapidement puce

play01:12

qu'on commençait pas à gérer les erreurs

play01:13

pour le début histoire de pas trop

play01:15

compliquer les choses on faisait

play01:17

directement le fameux cast vous vous

play01:18

rappelez je vous avais dit vous faites

play01:20

un petit cast comme ça de l'âge comme ça

play01:22

voilà vous êtes sûr que c'est bien

play01:23

considéré comme un nombre et pas comme

play01:24

une chaîne puisque la fonction input

play01:26

elle prend elle lit absolument tout au

play01:28

clavier comme étant une chaî de

play01:30

caractère et pas un entier donc on fait

play01:32

le petit cast après on avait juste à

play01:33

faire un print en disant tu as on

play01:39

mettez en d'accord donc là on va

play01:45

tester mince cétait pas ça

play01:49

python voilà quel âge as-tu d'accord et

play01:52

vous mettez l'âge d'ailleurs

play01:54

hop on va virer

play01:56

les les petits accents enfin les petits

play01:59

espaces par pardon

play02:01

voilà parfait

play02:04

vérifier d'accord donc ça fonctionnait

play02:07

il y avait pas de souci le problème

play02:08

c'est que dans ce genre de cas on ne

play02:10

vérifie absolument rien tout simplement

play02:12

parce que je peux faire

play02:13

ça et vous voyez que ça plante ça plante

play02:18

complètement on remarque alors ça on

play02:20

l'IT pas on l'avait pas spécialement

play02:21

détaillé jusqu'à présent on voyait

play02:22

simplement qu'il y avait une erreur là

play02:23

il vous met oui que c'est un donc une

play02:25

valeur en fait qui est incorrecte par

play02:27

rapport à un entier puisqueon note un

play02:29

texte et il vous met un mot ici qui est

play02:31

super important d'ailleurs vous voyez il

play02:32

est représenté par un mot avec une

play02:34

majuscule et ensuite le mot error

play02:35

commence par une majuscule vous avez des

play02:37

value error vous avez des type error

play02:39

vous avez des zer division error vous

play02:41

avez vous aurez même des os error des

play02:44

type error et cetera et cetera ce sont

play02:46

des exceptions notamment des types

play02:48

d'exception qui ont été levé par par le

play02:51

l'interpréteur ça veut dire qu'il a

play02:52

remarqué une erreur d'un certain type et

play02:54

il a lev une exception pour vous dire ah

play02:56

P il y a une erreur de tel type et je

play02:58

t'affiche un petit M message pour te

play03:00

dire quoi donc ça vous êtes d'accord que

play03:02

admettons quelqu'un là voudrait exécuter

play03:04

votre programme s'il tombe sur ce genre

play03:05

d'erreur c'est pas propre du tout pour

play03:07

le développeur c'estit très bien il voit

play03:08

où est le problème et cetera pour le

play03:10

l'utilisateur ça va pas du tout parce

play03:12

que bah il a une erreur de qu'on

play03:13

pourrait penser même presqueà une erreur

play03:14

de codage alors que non votre code en

play03:16

fait il est correct il est tout à fait

play03:17

correct hein je veux dire au niveau de

play03:18

la syntaxe et cetera il y a pas de bug

play03:20

en fait dans ce programme c'est juste

play03:21

que vous ne gérez pas un cas d'erreur

play03:23

possible qui peut très vite arriver

play03:24

parce qu'il y aura bien un jour un malin

play03:26

qui va noter du texte alors vous

play03:27

demandez un âge donc on est obligé de

play03:29

vérifier ça le problème il se situe au

play03:30

niveau du cast c'est-à-dire que là j'ai

play03:33

essayé de transformer en nombre entier

play03:35

le un prénom tout simplement c'est juste

play03:38

pas possible donc dans la mesure où vous

play03:40

avez une instruction surtout utilisateur

play03:44

parce qu' faut la règle la règle

play03:45

premièreinatique c'est ne jamais faire

play03:46

confiance à l'utilisateur de toujours

play03:48

tout vérifier alors ça peut être un

play03:49

utilisateur ou une information que vous

play03:51

avez récupéré d'une base vous avez

play03:52

récupéré par exemple d'une requête ou

play03:54

autre he d'accord d'un fichier ou

play03:56

n'importe quoi tout ce qui aurait pu

play03:57

être corrompu modifié par un utilisateur

play03:59

ou ou par un tiers doit être absolument

play04:02

vérifié ça c'est une règle d'or en

play04:03

informatique sinon bah c'est comme ça

play04:04

qu'on s'expose à des des problèmes dans

play04:06

de sécurité si ce n'est plus grave donc

play04:09

nous cette ligne est embêtante puisqueon

play04:11

a rien vérifié on a vraiment pas vérifié

play04:13

ce genre de chose donc la première chose

play04:14

à faire c'est la base on va dire si

play04:17

vraiment il fallait gérer à la base de

play04:19

la base de la base un cas d'erreur

play04:21

possible dans un programme c'est

play04:23

d'utiliser une fameuse un fameux jeu

play04:25

d'instruction ce qu'on appelle le try

play04:27

except donc on va en parler alors pour

play04:28

d'autres langages ce serait le try catch

play04:30

mais là on parle vraiment de try Excel

play04:32

vous allez voir comment ça fonctionne

play04:33

donc try ça veut simplement dire essayer

play04:35

en anglais c'est pas compliqué vous

play04:36

mettez try de points et nous ce qu'on

play04:38

veut essayer c'est ce fameux cast on est

play04:40

d'accord parce que il est possible que

play04:42

ce cast ne puisse pas fonctionner si

play04:44

vous mettez un nom cast un nom c'est

play04:46

impossible en entier en tout cas je

play04:47

parle vraiment en entier on essae ça et

play04:50

on va utiliser le mot except pour

play04:53

exception donc on va dire dans le cas où

play04:55

tu lèves une exception qu'est-ce que tu

play04:57

fais donc moi je veux pas qu'il

play04:59

m'affiche cette ligne la value error

play05:00

n'importe quoi donc de la base si on est

play05:02

quelqu'un de feignant qu'on a vraiment

play05:04

pas envie de commencer à gérer des

play05:05

erreurs de manière particulière à

play05:06

refaire une boue pour redemander l'âge

play05:07

et cetera admettons B on peut mettre au

play05:09

moins un petit print ne serait-ce que ça

play05:11

pour dire l'âge indiqué est incorrect

play05:15

c'est vraiment la base on va mettre un

play05:17

point d'exclamation parce qu'on est

play05:18

vraiment pas content voilà on va

play05:21

relancer le programme si je mets 24 par

play05:23

exemple vous voyez que le programme se

play05:25

passe sans encombre et si je fais le

play05:27

petit malin en mettant une chaîne de

play05:29

caractère il me dit que l'âge indiqué

play05:31

est incorrect ok donc voilà déjà on a

play05:33

quand même géré on a plus cette espèce

play05:35

d'erreur toute moche alors il y en a qui

play05:36

vont me dire ou on a quand même le print

play05:38

qui se fait à la fin bien évidemment

play05:40

donc si on se contente on se contente

play05:42

pardon du minimum on va le mettre ici

play05:44

puisqueon essae là d'afficher une donnée

play05:47

qui a pu être corrompue à cause de ce

play05:49

fameux cast par la suite donc si on veut

play05:51

être vraiment je vous dis le plus

play05:52

feignant ça c'est la méthode feignante

play05:53

j'ai envie de dire on va faire dans cet

play05:55

ordre là donc là pas de souci d'accord

play05:59

et là évidemment il affiche simplement

play06:02

que làâage indiqué é correct donc là au

play06:04

moins c'est propre on a une erreur le

play06:05

programme s'est arrêté bon tant pis on

play06:07

aura peut-être plus à la rigueur

play06:08

redemander l'âche plutôt que de quitter

play06:10

bêtement mais pourquoi pas ça fonctionne

play06:12

au moins ça évite d'afficher un truc un

play06:13

peu bizarre avec ligne un tel machin ça

play06:16

planté et cetera ça fait vraiment pas

play06:17

très professionnel en tout cas donc ça

play06:19

c'est le minimum on peut maintenant

play06:22

gérer euh également d'autres

play06:25

fonctionnements parce que là vous avez

play06:26

vu que le fameux h de l'utilisateur je

play06:28

le faisais ici en général on

play06:31

utilise le mot else oui on l'ajoute ici

play06:34

on met else et on va mettre là pour dire

play06:37

que tu essayes un certain nom

play06:40

d'instruction en général c'est une seule

play06:41

chose qu'on fait en général on fait un

play06:43

try un bloc try et cetera pour une seule

play06:46

instruction des fois ça peut être

play06:47

plusieurs mais en général c'est beaucoup

play06:49

comme ça on essaie dans quelque chose où

play06:51

on sait que ça peut voilà ça peut mal se

play06:52

passer par rapport à l'utilisateur ou

play06:54

autre chose une lecture de fichier ou

play06:55

n'importe quoi par exemple ouvrir un

play06:57

fichier on devrait normalement le tester

play06:59

comme ça on devrait dire j'essaie

play07:00

d'ouvrir un fichier si on voit que ça va

play07:01

pas marché ça aura levé une exception à

play07:03

priori et dans ce cas-là on peut la

play07:05

gérer donc qui fait ça tu essayie de

play07:07

caster l'âge d'utilisateur si tu n'y

play07:09

arrives pas enfin si tu lèves une

play07:10

exception alors là voyez j'ai pas parlé

play07:12

de type on verra ça après si tu relèves

play07:14

une exception pe importe laquelle donc

play07:16

n'importe laquelle exception tu affiches

play07:18

ça sinon c'est qu'à priori ça s'est bien

play07:20

passé donc tu affiches ça donc là on va

play07:22

obtenir le même résultat que tout à

play07:25

l'heure voyez là j'ai indiqué é correct

play07:28

et si je mets ça

play07:30

d'accord ça fonctionnera donc au niveau

play07:32

exécution on ne voit aucune différence

play07:34

par contre au niveau codage c'est plus

play07:35

propre de fonctionner comme ça et on a

play07:38

un 4ème type de mot alors on n'est pas

play07:40

obligé de tous les mettre d'accord le

play07:41

minimum c'est ça try except d'accord par

play07:44

que vous voyez que le LSE au début je

play07:46

l'avais mis là dedans c'est pas

play07:47

forcément très propre mais pourquoi pas

play07:48

on peut aussi avoir un

play07:51

finally qui veut simplement dire que

play07:54

dans tous les cas tous les cas de figure

play07:56

peu importe ce qui s'est passé tu

play07:57

m'afficheras ce qu'il a dans le finally

play07:58

ça veut dire finalement en vrai tu me

play08:00

fais dans tous les cas ça donc nous on

play08:02

peut mettre on va rester très simple on

play08:03

va mettre fin du programme par que je

play08:05

veux dans tous les cas annoncer que le

play08:06

programme il se termine

play08:08

ok

play08:10

voilà et là pareil peu importe ce que je

play08:14

note

play08:15

hein on obtient absolument bah le

play08:18

finally est toujours toujours exécuté

play08:20

tout ce qui se passe dans ce bloc là

play08:22

voilà donc ça c'était les mots à

play08:24

connaître je dis le minimum c'est try

play08:27

accept et ensuite vous avez le el pour

play08:29

ce qui se passe en cas de réussite et le

play08:31

finally c'est ce qui a exécuté dans tous

play08:33

tous les cas de figure d'accord donc

play08:36

mettre h je mets toujours des petites

play08:38

notes gér les exceptions c'est histoire

play08:42

d'avoir les les mots try except ça

play08:47

c'est l'obligatoire j'ai envie de dire

play08:49

et on peut éventuellement avoir le else

play08:51

le finally et voilà ça c'est des choses

play08:55

en plus que l'on peut effectivement

play08:57

compter au niveau des véf iation alors

play09:00

moi dans mon cas le problème c'est que

play09:02

là je lui dis d'afficher que l'âge

play09:04

indigué est correct si par exemple il

play09:06

lève une exception le problème c'est que

play09:08

bon là dans ce caslà ça va pas lever

play09:09

15000 exceptions différentes vous avez

play09:11

vu tout à l'heure d'ailleurs ça levit

play09:13

une value error donc normalement par

play09:16

qu'il y a des cas où ça pourrait lever

play09:17

plusieurs exceptions une ligne

play09:18

différente où je sais pas ça pourrait

play09:21

être embêtant B on va on va reprendre le

play09:23

code différemment on va faire ça on va

play09:26

faire calcul

play09:29

qu'est-ce qu'on peut

play09:31

faire nombre on mettre nombre alors je

play09:34

vais faire des choses en dur je vais pas

play09:35

les demander en je vais pas les demander

play09:37

forcment utilisateur on va dire qu'on a

play09:38

un nombre je sais pas pourquoi c'est

play09:39

comme ça c'est tout bête nombre 150 dans

play09:42

tous les cas et pour le nombre 2 on va

play09:45

le demander dire on a demander les de

play09:46

nom mais c'est histoire de pas rajouter

play09:47

trop de input et ce choisir le

play09:52

nombre pour diviser pour

play09:56

diviseril OK là je vais faire du coup

play10:00

alors nombre 2 bon nombre 1 il est déjà

play10:03

en int parce que c'est marqué ici je

play10:05

l'ai affecté directement avec une valeur

play10:06

enure donc on est sûr que c'est un

play10:07

entier et ici je vais lui dire tu forces

play10:10

avec un casque comme on aurait fait

play10:11

avant ensuite tu fais je sais pas moi tu

play10:14

fais allez ou print de je sais pas moi

play10:20

résultat égal on va utiliser format

play10:23

histoire de changer un petit

play10:25

peu format de nombre 1 divisé par nombre

play10:32

2 normalement ce code là devrait être

play10:34

tout compréhensible pour vous he s'il y

play10:35

a quelque chose de compliqué dans ce que

play10:37

j'ai noté revoyez les vidéos d'avant

play10:39

histoire de pas vous perdre ou de pas en

play10:40

tout cas bah avoir des lacunes en fait

play10:42

dès le début ça sera un petit peu

play10:44

dommage pour vous donc normalement tout

play10:45

ça est clair tout ça a été vu en tout

play10:47

cas dans les vidéos précédentes donc on

play10:49

fait simplement une première variable

play10:51

qu'on affecte en dur on premiè une

play10:53

deuxième variable pardonù on va demander

play10:55

à stocker une valeur à l'utilisateur

play10:57

ensuite on la casse celle-ci donc plutôt

play10:59

pour être plus voilà plus exact et

play11:01

ensuite on affiche le résultat de cette

play11:03

division d'accord on va tester donc là

play11:07

normalement si vous AZ réfléchi vous

play11:08

voyez qu'il y a plusieurs possibles

play11:09

erreurs qui peuvent arriver dans genre

play11:11

de programme choisir le nombre divisé

play11:13

normalement tous les matateux ont penser

play11:15

au zéro vous savez tous que la division

play11:16

par zéro n'est pas possible si j'essaie

play11:18

de diviser par zéro BIM j'ai un zé

play11:21

division error division par zé c'est

play11:23

interdit en mathématique ça n'existe pas

play11:25

donc j'ai un type d'exception mais

play11:28

qu'est-ce qui se passe si je mets ça

play11:30

est-ce que ça va me faire une zé

play11:31

division error bah non parce que

play11:33

j'essaie de diviser par un texte donc là

play11:35

j'ai une value error vous voyez alors si

play11:38

on est trop feignant d'accord on va

play11:41

procéder de cette manière on va faire

play11:44

ça donc

play11:47

try on va dire j'essaye mon cast

play11:49

d'accord comme on a fait tout à l'heure

play11:51

on va dire en cas d'exception parce que

play11:53

on a pas envie de se prendre trop la

play11:54

tête on va dire je sais pas moi alors

play11:58

bon le nombre ê incorrect bah ça veut

play11:59

pas forcément mettons on va dire voilà

play12:01

la personne le développeur s'est dit

play12:03

ouais dans ce calcul là comme jeà je

play12:04

connais bien les maths je sais qu'on

play12:06

peut pas diviser par zéro donc je dis

play12:08

que si ça une exception c'est que la

play12:09

personne a essayé de diviser par zéro

play12:11

donc je mets par exemple vous ne pouvez

play12:14

pas diviser par zéro d'accord admettons

play12:18

donc pas de souci le mec il pense qu'il

play12:20

a géré son erreur le développeur pas de

play12:21

problème on teste le programme bon

play12:24

effectivement s'il tombe sur quelqu'un

play12:25

qui fait ça d'accord alors déjà oui euh

play12:27

division par euh c'est pas ça le

play12:30

problème effectivement euh on va plutôt

play12:32

mettre là puisque c'est ça qui lève

play12:34

l'exception c'est pas le cast en fait

play12:36

voilà c'est ça parce qu'en fait ça c'est

play12:38

deux choses ça ça peut ça peut faire

play12:40

lever une value error du fait qu'on

play12:42

essaie de caster en entier un un texte

play12:45

et le calcul ici peut faire lever une

play12:47

zéro division erreor donc on va mettre

play12:49

les deux parce que ces deux lignes

play12:50

peuvent peuvent faire lever une

play12:51

exception et vous allez voir où est le

play12:53

problème si on n'est pas assez précis

play12:55

donc effectivement celui qui va faire ça

play12:56

vous ne pouvez pas diviser par zéro on

play12:58

va se dire yes il a bien indiquer le

play12:59

problème qu' avait ouais mais moi en

play13:00

fait j'ai fait ça j'ai mis du texte et

play13:03

on me dit vous ne pouvez pas diviser par

play13:04

zé bah le le le message que l'on me

play13:07

donne il a rien à voir avec ce que j'is

play13:08

avant j'ai pas essayé de diviser par

play13:09

zéro j'ai essayé de mettre du texte donc

play13:11

vous voyez on n'est pas assez précis

play13:13

donc c'est pour ça que l'on peut

play13:15

préciser le type d'exception donc là moi

play13:18

je vais mettre en cas de 0 division

play13:22

error ça se met d'ailleurs en jaune vous

play13:24

reprenez en fait le nom que vous voyez

play13:25

là qui s'affiche dans les exceptions pas

play13:27

besoin de les apprendre par cœur hein

play13:28

come PZ pas à prendre tous les noms des

play13:30

types d'exception par cœur vous allez au

play13:31

pire sur la doc Python ou alors vous

play13:32

faites comme moi vous provoquez l'erreur

play13:35

il va vous donner le nom d'accord c'est

play13:36

pas des choses qu'on apprend par cœur

play13:37

les nom d'exception après on finit par

play13:38

les retenir naturellement bien sûr mais

play13:40

il y en a tellement que vous pourrez pas

play13:42

forcément tout retenir par cœur même

play13:43

s'il y en a qui reviennent assez souvent

play13:44

donc le zé division error voilà comme ça

play13:47

je lui dis s'il y a cette exception là

play13:49

qui tombe qui est levé tu fais ce print

play13:51

et on peut les cumuler on peut mettre

play13:53

plusieurs except si tu as une value

play13:56

error c'est seulement dans ce cas que tu

play13:59

me dis vous devez entrer par exemple un

play14:02

nombre d'accord et on peut si on veut

play14:05

être très précis mettre bah s'il y avait

play14:07

une autre exception qui se levait ça

play14:08

peut arriver admettons j'en sais rien

play14:10

moi personne pourrait faire un truc au

play14:11

niveau de la C du programme qui ferait

play14:13

une autre exception peut-être une error

play14:15

ou j'en sais rien et on met à ce

play14:17

moment-là voilà print valeur incorrecte

play14:20

par exemple parce qu'on sait pas à quoi

play14:22

ça'attendre comme erreur ici on sait pas

play14:23

qu'est-ce qui aura provoqué cette

play14:25

exception là qu'on ne connaît pas

play14:27

celle-là on sait pourquoi elle peut

play14:28

arriver donc on sait qu'est-ce qu'on

play14:30

doit indiquer à l'utilisateur celle-là

play14:32

on sait pourquoi donc on sait quoi

play14:33

indiquer aussi par contre ici on sait

play14:34

pas comment il en arrié là donc on lui

play14:36

dit tout simplement valeur incorrecte OK

play14:38

et là en faisant ceci si je divise par

play14:43

zéro vous voyez qu'il me je ne peux pas

play14:45

diviser par zéro il est bien rentré par

play14:46

l'exception ici et en revanche si je

play14:49

mets un texte il me dit vous devez

play14:50

rentrer un nombre et si mais là je vois

play14:53

pas bon ce que je pourrais noter je sais

play14:54

pas peut-être des tabulations peut-être

play14:56

non c'est un nombre donc il prend pas

play14:57

voilà pour lui c'est desvu error donc

play15:00

honnêtement je ne sais pas je sais pas

play15:02

comment je pourrais voilà là voyez bon

play15:05

j'ai un keyboard inter parce que j'ai

play15:06

fait un contrôle C mais ça rien à voir

play15:08

avec ça donc non j'ai pas enfin voilà il

play15:10

y a peut-être moyen de faire une autre

play15:12

une autre de provoquer une autre

play15:13

exception donc au moin on l'a prévu dans

play15:15

tous les cas et après on peut rajouter

play15:18

si ça se passe bien d'accord genre bravo

play15:20

tu as réussi bravo tu as noté un nombre

play15:24

valide

play15:26

admettons et puis le finally bon comme

play15:28

j'avais dit tout à l'heure on peut sans

play15:29

problème le cumuler aussi hein d'accord

play15:32

voyez on peut tout

play15:36

cumuler

play15:37

voilà voilà et si je fais ça

play15:41

d'accord donc tous les cas sont gérer

play15:44

d'accord alors l'ordre he parce que

play15:46

çachez qu'un accient qui V me poser la

play15:48

question ici l'ordre vous pouvez mettre

play15:49

celui que vous voulez d'accord python

play15:51

c'est un un interpréteur donc il va

play15:52

faire ligne par ligne il va à la rigueur

play15:54

vous pouvez mettre éventuellement pour

play15:56

optimiser un petit peu celui qui a plus

play15:58

de chance d' arriver pourquoi pas donc

play15:59

honnêtement je pense CELI a plus de

play16:01

chance d'arriver c'est le value

play16:02

quelqu'un qui noterait pas un nombre

play16:04

puce qu'en général les gens savent qu'on

play16:05

peut pas diviser par zé en général donc

play16:07

vous pouvez par exemple inverser mais

play16:09

l'ordre n'a pas d'importance que Python

play16:10

va aller ici va voir si ça rentre dedans

play16:12

ou pas si ça ne rentre pas il passe à la

play16:13

suivante à la suivante ça bah il le fera

play16:16

pas s'il est rentré dans un seul d

play16:17

except il va directement sortir et s'il

play16:20

y a un finally avant de sortir il va

play16:21

passer par le finally dans tous les cas

play16:23

ça c'est tout le temps c'est il fait le

play16:24

try obligatoire ensuite il vérifie

play16:26

toutes les exceptions jusqu'à la

play16:28

dernière s'il est rentré dans aucune il

play16:30

va dans le els s'il est rentré dans une

play16:33

bah il fait ce qu'il y a dedans et à la

play16:34

fin de sortir de toute cette ce bloc il

play16:37

fait le finally et seulement après il

play16:38

revient au programme principal vous

play16:40

voyez tout se suit tout s'enchaîne en

play16:41

fait dans l'ordre ça s'enchaîne sans

play16:43

problème naturellement il y a pas de

play16:44

souci voilà comme ça on gère vraiment

play16:46

les erreurs de manière correcte avec des

play16:48

noms précis de type d'erreur plutôt que

play16:50

d'avoir un message général en excepte

play16:51

tout court donc on évite rarement

play16:53

d'utiliser le except tout court comme ça

play16:54

sauf quand vraiment on veut voilà on

play16:56

fait son petit programme dans son coin

play16:57

qu'on a pas envie de perdre de temps

play16:58

mais gérer un minimum les erreurs c'est

play16:59

ce qu'on va faire mais quand on va être

play17:00

précis proposer un distribuer un

play17:02

programme on essaie d'être très précis

play17:04

dans les messages là on comprend tout de

play17:06

suite pourquoi ça a planté là c'est

play17:07

parce que la personne a bien essayé de

play17:09

diviser par zéro là c'est parce qu'il a

play17:10

pas rentré apparemment un nombre c'est

play17:11

effectivement le cas si on regarde ce

play17:12

qui a été saisi d'accord donc faut

play17:14

vraiment que le message soit clair si

play17:16

vous devez indiquer une erreur

play17:17

indiquez-la de manière claire faut qu'on

play17:19

comprenne pourquoi la la personne s'est

play17:20

plantée sinon je vois pas l'intérêt ça

play17:22

n'a aucun intérêt donc voilà vous savez

play17:24

pour try except le else le finally et

play17:27

comment com comment vous allez dire

play17:29

comment zérer on va dire les types

play17:31

d'exception donc je vais mettre je vais

play17:33

vous en mettre quelques-uns quand même

play17:34

si vous voulez des noms alors on a le

play17:36

value error on peut avoir si par exemple

play17:38

vous essayez de d'indiquer une variable

play17:41

qui n'existe pas qui est pas définie on

play17:42

va avoir un name error vous avez le Z0

play17:46

division

play17:47

error pour des erreurs systèm vous allez

play17:50

avoir le os error qu'on trouve plus

play17:52

rarement quand même et vous allez avoir

play17:54

mais ça on va le voir juste après le

play17:55

assertion error voilà ça c'est alors

play17:58

j'en oublié un pardon ici plutôt pour

play18:01

les types de varibles type error voilà

play18:03

ça c'est les standards c'est ceux qu'on

play18:05

va retrouver le plus souvent os error un

play18:07

petit peu moins quand même mais vraiment

play18:09

voilà ces trois là de toute façon c'est

play18:10

très récurrent celui-là bah en cas

play18:12

division par zéro bien évidemment et

play18:14

celui-là on va en parler juste après

play18:15

donc vous allez voir à quoi il

play18:16

correspond voilà voilà alors ça on a

play18:19

tout vu normalement pour les exceptions

play18:21

et cetera alors oui donc là on avez vu

play18:22

comment tout simplement gérer une

play18:23

exception qui a été levée alors

play18:25

qu'est-ce qu'on entend par levé bah vous

play18:26

imaginez moi je prends je donne toujours

play18:28

cette exemple là quelqu'un donc il a vu

play18:30

un problème d'accord il va noter sur un

play18:31

ballon le souci et il va le un ballon de

play18:34

baudruche et il va le laisser s'envoler

play18:35

d'accord donc il lève l'exception il

play18:37

laisse le ballon s'envoler et il en

play18:39

attend que quelqu'un le capture

play18:41

l'attrape d'accord attrape l'exception

play18:42

qui a été levée donc si personne

play18:44

l'attrape bah tant pis c'est ce qui se

play18:45

passait au début de no programme sans

play18:46

avoir de try except c'est-à-dire bah

play18:48

qu'on a un gros plantage avec un message

play18:50

tout moche dans le terminal et si

play18:51

quelqu'un heureusement l'a attrapé ben

play18:53

on peut gérer voyez ici bah là on a

play18:54

attrapé des exceptions en division par

play18:56

zéro ici on attrape une exception de

play18:59

type voilà par rapport à la valeur et là

play19:01

on attrape tous les toutes les autres

play19:02

types d'exceptions qui pourraient

play19:03

intervenir ou subvenir enfin survenir en

play19:05

tout cas pendant l'exécution donc on

play19:07

gère absolument tout maintenant et ça ce

play19:10

sera surtout utile quand vous apprendrez

play19:12

à créer vos propres tites d'exception

play19:13

parce que oui avec l'objet vous pourrez

play19:14

créer vos propres classes et créer vos

play19:16

propres exceptions donc vous pourrez

play19:17

créer je sais pas moi comment dire

play19:21

inventaire inventory error pour gérer un

play19:24

inventaire ou n'importe quoi ou fight

play19:26

error je sais pas une exception par

play19:28

rapport à un combat dans un je je prends

play19:30

toujours des exemples dans un jeu vidéo

play19:31

he toujours par que c'est quand même

play19:32

c'est quand même le ce qui est le plus

play19:33

clair pour tout le monde donc on

play19:35

pourrait inventer ça et peut y avoir

play19:36

dans certains cas l'intérêt de lever

play19:38

nous-mêmes les erures parce que là vous

play19:39

voyez qu'à chaque fois c'est Python qui

play19:41

le fait mais le problème c'est que

play19:42

Python bon bah lui voilà il connaît il

play19:44

manipule des nom et cetera ça il sait

play19:46

faire mais il se pourrait que dans

play19:47

certains cas dans votre programme vous

play19:48

ayez vous vous savez en fait dans un

play19:50

algorithme que vous avez fait qu'il y a

play19:51

possibilité qu'à un moment donné votre

play19:53

algorithme puisse lever une exception

play19:55

mais c'est pas dit que Python il va la

play19:56

trouver alors si c'est une exception

play19:58

standard il va l'avir forcément par

play20:00

contre si c'est une exception précise je

play20:02

sais pas si à mettons dans un jeu vidéo

play20:04

je sais pas moi vous estimez par exemple

play20:05

que la personne à CH fois vous avez un

play20:07

personnage d'accord qui gère un

play20:08

inventaire et il peut pas avoir plus de

play20:09

10 objets dans l'inventaire pour Python

play20:11

il y a pas de il y a pas de type de

play20:14

d'exception qui disent par exemple bah

play20:16

vous avez essayé de porter plus de 10

play20:17

objets dans votre inventaire on est

play20:18

d'accord ça n'existe pas par contre vous

play20:21

par la suite vous pouvez très bien créer

play20:22

un type d'exception al ce serait un peu

play20:24

bizarre pour l'exemple que je donne mais

play20:25

pourquoi pas on peut peut tout imaginer

play20:27

en informatique

play20:28

de faire une exception par exemple vous

play20:30

avez dépassé entre guillemets votre

play20:31

quota de d'inventaire d'objet portter un

play20:34

inventaire et en faisant ça vous

play20:35

pourriez lever une exception je sais pas

play20:37

moi par exemple inventory MT error qui

play20:40

voudrait dire que l'inventaire est plein

play20:42

et du coup bah ça affichera un message

play20:44

comme quoi votre votre sac est plein

play20:45

votre inventaire est plein vous pouvez

play20:46

pas porter d'objets supplémentairire

play20:47

vous voyez un petit peu le le

play20:48

cheminement du coup ça peut être super

play20:51

intéressant donc ce que je vous montrer

play20:52

c'est juste pour les la syntaxe ça va

play20:54

pas être utile à l'heure d'aujourd'hui

play20:56

pour ce que vous avez vu mais retenez-le

play20:58

parce que ça servira par la suite quand

play21:00

vous ferez vraiment vos propres types

play21:01

d'exception donc pour lever une

play21:03

exception je vous le montre c'est qu' en

play21:04

un seul mot ça va être simplement de

play21:06

faire un raise on va faire un truc tout

play21:08

bête je vais mettre ge alors ce que je

play21:12

vais vous montrer sert absolument à rien

play21:13

c'est vraiment juste pour montrer au

play21:14

niveau syntaxe bêtement comment on les

play21:16

crrit en fait comment on fait une levée

play21:17

d'exception nous-même à la main quel âge

play21:22

as-tu voilà on va faire un alors je fais

play21:26

même pas une vérification d'accord c'est

play21:29

juste pour vous montrer et là je vais

play21:31

faire un raise euh je sais pas moi non

play21:35

je va faire pas pas ça je vais plutôt

play21:36

faire if

play21:38

âge plus petit que allez plus petit que

play21:41

25 je sais pas pourquoi c'est vraiment

play21:43

tout bête comme exemple je vais lever

play21:46

donc on utilise le mot clé raise et je

play21:49

choisis le type alors là normalement

play21:50

quand on a créé nême une exception on

play21:51

mettrait ce que je vous avais dit par

play21:52

exemple

play21:54

inventory alors j' mis MT mais c'est pas

play21:56

c'est pas vide en fait oui c'est full

play21:58

plutôt et cetera comm quoi il est plein

play21:59

enfin peu importe que MT c'est pour VI

play22:01

donc je vous dis inventory MT pour vous

play22:03

dire que l'inventaire est plein non

play22:04

c'est plutôt l'inverse MT c'est pour

play22:06

vide bref donc inventory par exemple

play22:08

error donc vous voyez là il met pas en

play22:10

jaune parce que ça n'existe pas

play22:11

évidemment python donc on pourrait créer

play22:12

quelque chose comme ça mais regardez ce

play22:14

qui est assez bizarre vous allez me dire

play22:15

pourtant ça n'a absolument rien à voir

play22:17

parce que je fais pas de division mais

play22:18

je peux sans problème faire ça d'accord

play22:20

alors normalement si je mets tout seul

play22:22

ça va être un peu bizarre d'accord par

play22:24

que je vais noter n'importe quoi il va

play22:25

mettre il va mettre rien du tout

play22:27

effectivement que je suis audessus de 26

play22:29

si je mets 16 là vous voyez qu'il me met

play22:31

une zé division error c'est dire

play22:33

pourtant j'ai ça a pas du tout fait une

play22:35

division par zéro c'est vous qui l'avez

play22:37

levé en fait d'accord on peut même

play22:40

mettre un petit message si on veut

play22:45

voilà d'accord alors il vous affiche ça

play22:47

comme ça donc ça sert à rien mais voilà

play22:49

mais ça c'est le fameux petit message

play22:51

qui vous affiche quand c'est piton qu'il

play22:52

fait lui-même d'accord et du coup B on

play22:54

peut on peut y aller si on fait par

play22:57

exemple je sais pas

play23:00

moi qu'est-ce qu'on peut

play23:05

faire on va faire bah si on va faire ça

play23:08

on va faire un try on va dire donc l'âge

play23:11

et cetera voilà et ensuite si là j'ai

play23:13

plus petit 25 tu lèves l'exception 0

play23:15

division er et comme on peut lever

play23:17

l'exception vous savez qu'on peut la

play23:19

capturer aussi avec un except donc je

play23:21

peux faire alors là bienvidment ça n'a

play23:22

aucun sens ce que jeis c'est pas à faire

play23:24

du tout je vous le dis c'est juste pour

play23:25

vous montrer comment enlève une

play23:26

exception et ben on peut dire j'ai j'ai

play23:29

attrapé voilà j'ai attrapé ton Pokémon

play23:31

comme comme un Pokémon en fait j'ai

play23:33

attrapé ton exception inutile parce que

play23:36

bah là de toute façon on fait une zé

play23:37

division error ça n'a rien à voir mais

play23:39

c'est juste pour montrer que ça

play23:41

fonctionne vous voyez voilà on a levé un

play23:44

type d'exception reconnu par python donc

play23:46

on peut bien évidemment faire comme on a

play23:47

fait au début c'est le capturer avec un

play23:49

except et gérer le cas de figure ça

play23:51

fonctionne mais ça le raise ça vous

play23:53

servira à rien pour le moment ce sera

play23:55

vraiment utile quand vous créz vous

play23:56

allez créer vos propres tit d'exception

play23:58

là à l'heure actuelle vous en aurez pas

play24:00

besoin vous aurez juste besoin de faire

play24:02

des try pour tester certaines parties du

play24:03

code sensible et avec les les except

play24:06

finally Lesse et cetera de gérer les cas

play24:08

d'erreurs possies et en cas de succès et

play24:10

cetera ça c'est utile et on va terminer

play24:12

cette vidéo hein pour pas faire trop

play24:13

Tron par qu'on aura vu déjà pas mal pas

play24:15

mal de choses je trouve ça vous a ça

play24:17

vous faire beaucoup beaucoup de choses à

play24:18

revoir et on va voir également comment

play24:20

gérer tout ce qui est assertion alors

play24:23

une assertion ça va être plus une pareil

play24:25

ça va être un plus ou moins un test en

play24:27

fait de où vous savez qu'il peut y avoir

play24:29

un souci tout simplement dessus et on va

play24:32

utiliser le mot- clé asserte comme ceci

play24:35

d'accord une assertion en fait vous avez

play24:37

c'est une instruction vous avez noter si

play24:39

l'assertion que vous avez alors ça peut

play24:41

permettre notamment de faire des plus ou

play24:43

moins des tests sur je sais pas moi sur

play24:45

un calcul par exemple qui serait pas

play24:47

possible ou autre il va lever une

play24:48

exception àertion error celle que

play24:50

j'avais noté ici d'accord et à partir de

play24:52

là vous pourrez la capturer comme vous

play24:54

voulez donc moi je peux très bien faire

play24:55

euh je sais pas moi qu'est-ce que je

play24:57

peux faire euh hm hm hm ben on va faire

play25:01

ce qu'on a fait tout à l'heure justement

play25:02

c'é c'est un bon exemple ça je vais

play25:04

reprendre sur ce que j'avais tout à

play25:05

l'heure âge ég

play25:08

input quel

play25:10

âge as-tu j'aurais pas dû l'effacer

play25:11

d'ailleurs mais c'est pas grave voilà on

play25:14

fait un âge de int de âge OK et là au

play25:18

lieu de faire juste un IF je fais assert

play25:21

â et je vérifie est-ce que là j'ai plus

play25:25

petit

play25:26

que 25

play25:28

d'accord et à partir de là vous verrez

play25:30

un petit peu ce qui se passe al

play25:32

normalement quand on a ça on fait un

play25:34

except quand même

play25:37

voilà non peut-être juste déjà le faire

play25:39

comme

play25:40

ça je vais pas le faire dans un try

play25:44

normalement je dois pouvoir juste le

play25:45

faire tout seul après bon en général

play25:47

c'est rare mais bon voir voilà quel âge

play25:50

as-tu bon je note 26 déjà il vous met

play25:52

assertion er effectivement puisque le

play25:54

assert alors là je l'ai fait un autre

play25:56

cas si je voulais reprendre le cas de

play25:57

tout à l'heure j'aurais dû mettre le

play25:58

symbole l'autre côté mais peu importe il

play26:00

vous dit tout simplement ça tu lèves une

play26:03

exception d'assertion donc une exception

play26:05

comme ça si l'âge est plus petit que 25

play26:08

là c'est effectivement le cas d'accord

play26:09

j'ai rentré non c'est effectivement le

play26:10

cas je dis n'importe quoi moi j'ai dis

play26:12

des bêtises pardon j'ai fait 26 voilà

play26:15

mais par contre comme c'est plus grand

play26:17

en fait on ne passe pas dans laasserion

play26:19

d'accord donc là HGE plus petit que plus

play26:22

petit que 25 non oui oui non parce qu'il

play26:25

est plus grand c'est 26 du coup il fait

play26:27

setion error ok donc en faisant mon try

play26:32

comme

play26:34

ceci donc là dans mon cas d'ailleurs

play26:36

j'aurais plutôt dû mettre ça voilà

play26:38

l'ertion il a fait comme ça

play26:41

euh toc toc toc donc ça c'est bon et

play26:45

ensuite on va mettre le except et là

play26:47

bien évidemment on va mettre le

play26:48

assertion

play26:53

error on va mettre voilà suis attraper

play26:57

l'exception même si

play27:01

bon on verra comme ça on va rester

play27:04

là-dessus donc là j'ai inversé d'accord

play27:07

hein les le signe là le la comparaison

play27:09

si je mets 15 il vous dit que j'ai

play27:10

attrapé l'exception d'accord voilà ça

play27:13

veut dire qu'il essaye de voir que l'âge

play27:16

est plus grand que 25 comme là l'âge est

play27:19

plus petit que 25 on lève l'exception si

play27:23

là j'avais

play27:24

été plus euh grand que 25 26 pas de

play27:30

souci d'accord alors là c'est un peu à

play27:31

l'envers pour ça voyez des fois Mme moi

play27:33

c'est pareil je fais attention à ce que

play27:34

je dis pas me tromper pas vous dire une

play27:35

bêtise ou vous ind en erreur l'asserion

play27:38

c'est vraiment ce qui doit ce qu'on

play27:39

attend en fait d'accord c'estd que là on

play27:41

attend vous pouvez vous pouvez si vous

play27:44

voulez ouais on peut plus ou moins

play27:46

commenter comme ça

play27:48

j'attends que âge enfin j'attends

play27:51

j'attends ça fait genre j'attends genre

play27:52

je fais une boucle le temps que ça se

play27:54

passe non je veux que voilà que GE soit

play27:58

plus grand que 25 c'est tout sinon bah

play28:01

voilà je lève une exception mais bon je

play28:02

va pas mettre de sinon ça fera un peu

play28:03

long c'est ça qu'il faut comprendre le

play28:04

Asert ça ve simplement dire je veux que

play28:06

la condition qui vient après soit valide

play28:10

si elle ne l'est pas tu me lèves une

play28:12

assertion error d'accord comprenez-le

play28:14

comme ça voilà je pense que ça sera

play28:14

beaucoup plus clair comme ça dans ce

play28:16

sens-l plutôt que comme j'avais expliqué

play28:18

au début c'était pas forcément très très

play28:20

compréhensible donc dans ce sens quand

play28:21

vous avez le motcé à ser dites-vous

play28:23

c'est on attend la condition qui suive

play28:26

si elle est validée comme ici 26 bah tu

play28:28

continues ce que tu fais hein d'habitude

play28:30

si ce qui suit le mot assert ça n'est

play28:32

pas validé et bien dans ce cas-là tu

play28:34

fais une assertion error donc là il y a

play28:36

pas de zé division error je sais pas

play28:38

quoi non c'est assertion error ça permet

play28:40

de le gérer comme ça alors c'était pas

play28:41

facile de vous l'expliquer déjà parce

play28:43

que bah on s inverse un petit peu au

play28:44

niveau de la sertion par rapport au choy

play28:46

ou dès qu'il y a une erreur PAF onlève

play28:47

l'exception on la récupère là c'est

play28:49

vraiment dans le cas où qu'est-ce qu'on

play28:50

veut en fait comme condition et surtout

play28:52

que bah je peux pas vous donner beaucoup

play28:54

beaucoup d'exemples parce qu'encore une

play28:55

fois on n pas encore vu vraiment la

play28:56

partie objet du langage on n pas fait

play28:58

d'objet de classe et cetera et du coup

play29:00

on n pas vraiment parlé des exceptions

play29:01

en tant queobjet donc c'est pas facile

play29:03

de vous expliquer des choses le c'est ça

play29:05

le problème du langage Python c'est que

play29:07

c'est un langage objet complet donc même

play29:09

tout ce que vous avez vu en procédura

play29:11

plus ou moins en réalité vous manipulez

play29:12

déjà des objet mais je peux pas

play29:14

commencer directement à vous parler

play29:15

d'objets sinon on compliquerait les

play29:17

choses et puis voilà enfin ce serait

play29:19

juste impossible à suivre pour certains

play29:20

donc je suis obligé de procéder par ces

play29:22

par les étapes pour commencer par le

play29:24

plus simple et venir par la suite pour

play29:25

bah vous expliquer voilà ça on

play29:27

manipulait comme ceci comme cela parce

play29:29

que c'était un objet qui était dessous

play29:30

en fait donc c'est pas forcément simple

play29:32

à à montrer mais je pense bon que là

play29:34

maintenant vous avez compris

play29:35

qu'effectivement au niveau du assert

play29:37

c'est voilà c'est en bref j'exige que

play29:40

âge soit plus grand que 25 sinon je vais

play29:42

lever une assertion error d'accord faut

play29:44

vraiment le comprendre comme ça donc

play29:45

dans le cas où c'est bon ça va si c'est

play29:47

pas bon évidemment on a une exception et

play29:49

on peut la capturer également avec un

play29:51

except ça fonctionnera voilà et puis

play29:53

comme ça on a fait le tour globalement

play29:54

normalement je vous ai fait un petit peu

play29:55

le tour de tout ce qu' avait à voir en

play29:57

tout cas à l'heure actuelle au niveau de

play29:59

la gestion d'erreur donc vous savez

play30:00

comment tester un code sensible avec le

play30:02

try comment gérer toutes les exceptions

play30:05

possible s'il le faut avec un simple

play30:06

except après vous pouvez affiner votre

play30:08

gestion d'erreur avec les fameux types

play30:10

d'exception voir par rapport à ce qui

play30:12

est provoqué en cas de réussite vous

play30:15

pouvez mettre un petit else

play30:16

éventuellement et bien évidemment si

play30:17

vous avez un code que vous devez

play30:18

exécuter dans tous les cas vous utilisez

play30:20

le petit mot cl finally donc un bloc

play30:22

finally ça fonctionnera aussi voilà donc

play30:24

à partir de maintenant alors on le fera

play30:26

pas forcément dans tout les vidéos

play30:27

suivantes parce que vous voyez que ça

play30:28

rajoute quand même pas mal de lignes de

play30:30

code et que le but bon c'est de d'aller

play30:31

à l'essentiel des notions que je vous

play30:33

enseigne donc je mettrai pas forcément

play30:35

des je va pas forcément gérer les

play30:37

erreurs dans tous les codes que je vais

play30:38

vous montrer par la suite j'essaierai de

play30:39

le faire de temps en temps quand il y a

play30:41

pas des choses trop trop longues mais la

play30:42

plupart du temps je ne le ferai pas

play30:43

alors si vous voyez que norement dans un

play30:45

code je fais ceci par exemple sans

play30:47

mettre dans un bloc try accept c'est pas

play30:49

que c'est comme ça qu'il faut faire

play30:50

essayez vous de prendre l'habitude quand

play30:52

vous avez quelque chose comme ça où vous

play30:53

savez que ça peut échouer ça peut lever

play30:55

une exception de le mettre dans un bloc

play30:57

accept prendre vraiment cette habitude

play30:59

dès que j'ai une modification qui peut

play31:01

entraîner une exception je le teste dans

play31:03

un bloc comme ça on est sûr voilà de

play31:05

gérer l'erreur en cas de problème au

play31:06

minimum au moins avec un except tout

play31:08

court d'accord au moins voilà minimum du

play31:10

code je vous dis c'est

play31:12

ça

play31:14

d'accord ça c'est vraiment le minimum

play31:17

minimum minimum vital comme ça on est

play31:19

sûr qu'on a géré l'erreur dans tous les

play31:20

cas plutôt que de faire simplement ça

play31:22

sinon on va avoir des messages tout tout

play31:24

bizarres dans le terminal c'est

play31:25

forcément pas joli pas très pratique pas

play31:27

bien pour l'utilisateur final qui lui

play31:29

veut pas voir des lignes de code ou des

play31:30

erreurs bizarres avec des nom des

play31:32

numéros de lign et tout ça évidemment ou

play31:33

des noms de d'exception il il n a rien à

play31:35

secouer entre guillemets de des noms

play31:37

d'exceptions et cetera il est pas

play31:38

développeur c'est vous le développeur

play31:39

donc l'utilisateur lui doit avoir un

play31:41

texte dans la langue qu'il parle pour

play31:43

comprendre l'erreur qu'il y a eu tout

play31:44

simplement et bien on va s'arrêter ici

play31:47

pour cette petite séance neu on se

play31:48

retrouvera du coup pour la prochaine on

play31:49

va pouvoir très rapidement maintenant

play31:51

enfin parler d'objets c'est pour ça que

play31:53

je voulais vraiment qu'on voie tout ça

play31:54

qu'on parle de modularité qu'on voie

play31:56

comment gérer les erreurs au minimum en

play31:57

tout cas pour pouvoir commencer la

play31:59

partie objet de Python donc à la suite

play32:01

hein pour la prochaine séance on va

play32:02

pouvoir vraiment démarrer là-dessus vous

play32:04

allez voir toute la puissance de ce

play32:06

langage comprendre pourquoi

play32:07

effectivement on dit que c'est un

play32:08

langage qui est tout objet que même le

play32:10

fameux int là le integer donc les

play32:12

entiers ce sont des objets tout en fait

play32:14

tous tous sont des objets vos variables

play32:16

et cetera ce sont également des choses

play32:17

qui peuvent se comporter comme des

play32:18

objets donc on regardera un petit peu

play32:20

tout ça par la suite dans la prochaine

play32:21

vidéo en attendant j'ai dis

play32:22

entraînez-vous bien n'hésitez pas encore

play32:24

une fois à commenter à poser des

play32:25

questions s'il y a quelque chose qui est

play32:26

pass c'est clair surtout que là on va

play32:28

passer une autre on va dire une autre

play32:30

étape de l'apprentissage du langage donc

play32:32

si là vous avez des choses qui ne sont

play32:33

pas tout à fait comprises ou qui sont

play32:35

pas assez claires que c'est pas facile

play32:36

hein de coder en direct en vidéo et de

play32:39

vous expliquer en même temps c'est

play32:40

vraiment pas pas facile comme chose donc

play32:43

il peut je peux très bien avoir dit des

play32:44

choses pas assez claires ou avoir parlé

play32:46

un peu trop vite ou être passé un petit

play32:47

peu trop vite sur certaines notions donc

play32:49

n'hésitez pas à demander à poser des

play32:50

questions s'il y a un moindre problème

play32:51

j'y répondrai volontiers comme ça vous

play32:53

serez vraiment paré pour la suite à très

play32:55

bientôt tout le monde et on se retrouve

play32:56

pour la prochaine

play32:59

[Musique]

play33:16

vidéo

Rate This

5.0 / 5 (0 votes)

Related Tags
PythonErreursGestionExceptionsTry-ExceptModularitéProgrammationDéveloppementCast de typeAssertTutoriels
Do you need a summary in English?