Colonnes de la série:【pythonNotes d'étude】
Aujourd'huiPythonLe contenu des notes est:
Une foisPythonException au script,Le programme doit saisir et gérer les exceptions.
La gestion des exceptions permet au programme de continuer à fonctionner normalement après le traitement des exceptions, Ne pas s'écraser ou mettre fin à l'exécution .
QuandPythonUne exception se produit lorsque le gestionnaire normal ne fonctionne pas.L'exception estPythonObjet,Indique une erreur.
QuandPythonNous devons capturer et gérer le script lorsqu'il y a une exception,Sinon, le programme mettra fin à l'exécution
Par exemple,:
>>> a = int(input())
x
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'x'
Dans le code ci - dessus,ValueError C'est une anomalie , Grâce aux informations d'exception , Nous pouvons trouver le numéro de ligne où se trouve l'erreur .
Dans les exemples précédents, ,Le Code modifié est:
>>> while True:
try:
a = int(input("Veuillez saisir un entier:"))
print("Le numéro que vous avez entré est:",a)
break
except ValueError:
print("Vous n'avez pas entré un entier!")
Veuillez saisir un entier:3.14
Vous n'avez pas entré un entier!
Veuillez saisir un entier:a
Vous n'avez pas entré un entier!
Veuillez saisir un entier:6
Le numéro que vous avez entré est: 6
Dans la procédure ci - dessus:
try
Etexcept
;int()Fonctions
Va lancerValueErrorAnomalie
;tryBloc
Détecté dans ValueErrorAnomalie
Heure,Ça va s'arrêter.try Code suivant le bloc ;exceptBloc
Code;except ValueError:
Après l'exécution du Code , Le programme va continuer à partir de whileDéclarations
Le début de l'exécution se poursuit ;int()Fonctions
Tout sera jeté.ValueErrorAnomalie
,Alorstry:
ArrièrebreakDéclarations
Je ne l'aurais pas fait., Le programme va continuer à tourner ;int()Fonctions
Je n'aurais pasValueErrorAnomalie
,tryBloc
Peut continuer à exécuter ,Jusqu'à ce qu'il touchebreakDéclarations
,Le programme sort de la boucle;try
Avecexcept
Les déclarations sont utilisées pour détectertry Exception dans le bloc de déclaration ,Et laissezexcept L'instruction capture l'exception et gère l'exception ; Si vous ne voulez pas que le programme se termine après une exception ,J'ai juste besoin detryBloc de déclaration
Exception à la capture ,Et dansexceptBloc de déclaration
Exception au traitement intermédiaire.
try
Avec except
L'utilisation de:
Analyser comme suit::
try
Le bloc d'instruction est exécuté en premier .- Si
try
Dans le bloc de déclaration Une exception s'est produite lors de l'exécution d'une instruction ,Python
On y va.except
Section,Juger de haut en bas L'objet d'exception lancé est - il lié àexcept
Les classes d'exception suivantes correspondent ,Et exécute le premierexcept
Bloc de déclaration suivant ,Traitement des exceptions terminé.- Si une exception se produit, Mais aucune catégorie d'exception correspondante n'a été trouvée , Exécuter sans aucun type de correspondance
except
Bloc d'instruction après l'instruction ,Traitement des exceptions terminé.- Si
try
Une exception s'est produite dans une déclaration d'un bloc de déclaration ,Et il n'y a pas de correspondanceexcept
Clause, Il n'y a pas non plus deexcept
Section, L'exception sera soumise au niveau supérieurtry/except
Instruction pour le traitement des exceptions , Ou jusqu'à ce que l'exception soit transmise au niveau supérieur du programme ,Pour finir la procédure.- Si
try
Aucune instruction dans le bloc d'instruction n'a été exécutée sans exception ,Python
Sera mis en œuvreelse
Bloc de déclaration après déclaration.- Fin de la mise en œuvre
except
Déclaration de gestion des exceptions après ouelse
Après le bloc de déclaration suivant , Le programme doit être exécutéfinally
Bloc de déclaration suivant . Les blocs d'instruction ici sont principalement utilisés pour les opérations de fermeture , Il sera exécuté indépendamment de toute exception .- Un module de gestion des exceptions a au moins un
try
Et unexcept
Bloc de déclaration,else
Etfinally
Le bloc de déclaration est facultatif .
Regardez un code:
Les trois tests sont les suivants :
1) Entrez dans le bon format ,Etexcept
Aucun des modules suivants n'exécutera ,else
Le module suivant sera exécuté ,finally
L'instruction du module suivant exécutera .
0
, Est détecté ZeroDivisionErrorObjet d'exception
,Inexcept ZeroDivisionError:
Les modules suivants sont exécutés pour gérer l'exception . Une fois le traitement des exceptions terminé ,Mise en œuvrefinally
Bloc de déclaration suivant .3)Si vous n'entrez quea
Valeur de,b
Aucune valeur assignée,Ettry
Le module lancera TypeErrorAnomalie
. Dans la gestion des exceptions au programme except
Le module gestionnaire pour ce type d'exception n'est pas listé dans , Sans type d'exception except
Le module est capable d'intercepter l'exception pour le traitement .Après le traitement de l'exception,finally
Les déclarations suivantes seront également exécutées .
BaseException
Toutes les classes de base anormalesSystemExit
L'interpréteur demande la sortieKeyboardInterrupt
L'utilisateur interrompt l'exécution(Normalement, c'est l'entrée^C)GeneratorExit
Générateur(generator)Une exception s'est produite pour aviser la sortieException
Erreur générale de la classe de baseStopIteration
L'Itérateur n'a plus de valeurStandardError
Toutes les exceptions standard intégrées à la classe de baseArithmeticError
Toutes les classes de base avec des erreurs de calcul numériqueFloatingPointError
Erreur de calcul du point flottantOverflowError
L'opération numérique dépasse la limite maximaleZeroDivisionError
Sauf(Ou prendre un moule)Zéro. (Tous les types de données)AssertionError
L'assertion a échouéAttributeError
L'objet n'a pas cette propriétéEOFError
Pas d'entrée intégrée,ArrivéeEOF MarquageEnvironmentError
Mauvaise classe de base du système d'exploitationIOError
Entrée/L'opération de sortie a échouéOSError
Erreur du système d'exploitationWindowsError
L'appel système a échouéImportError
Importer un module/L'objet a échouéLookupError
Classe de base pour la requête de données invalideIndexError
Cet index n'existe pas dans la séquence(index)KeyError
Il n'y a pas cette clé dans la carteMemoryError
Erreur de débordement de mémoire(PourPython L'interpréteur n'est pas fatal)NameError
Non déclaré/Initialiser l'objet (Pas de propriétés)UnboundLocalError
Accès aux variables locales non initialiséesReferenceError
Faible référence(Weak reference)Tentative d'accéder à un objet qui a été ramasséRuntimeError
Erreur générale d'exécutionNotImplementedError
Méthodes non encore mises en oeuvreSyntaxError
PythonErreur de syntaxeIndentationError
Erreur d'indentationTabError
TabMélanger avec des espacesSystemError
Erreur générale du système d'interpréteurTypeError
Action invalide pour le typeValueError
Paramètre non valable passéUnicodeError
UnicodeErreurs associéesUnicodeDecodeError
Unicode Erreur de décodageUnicodeEncodeError
Unicode Erreur de codageUnicodeTranslateError
UnicodeErreur de conversionWarning
Classe de base de l'avertissementDeprecationWarning
Avertissement concernant les caractéristiques dépréciéesFutureWarning
Mise en garde contre les changements sémantiques futurs dans la constructionOverflowWarning
L'ancien sur le levage automatique à long(long)AvertissementPendingDeprecationWarning
Avertissement concernant l'abandon des propriétésRuntimeWarning
Comportement d'exécution suspect(runtime behavior)AvertissementSyntaxWarning
Avertissement de syntaxe douteuseUserWarning
Avertissement généré par le code utilisateurLa structure générale de la classe d'exception est la suivante :
C'est bon,Voici les notes d'aujourd'hui,Bienvenue dans la section commentaires pour discuter.