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:
tryEtexcept;int()FonctionsVa lancerValueErrorAnomalie;tryBloc Détecté dans ValueErrorAnomalieHeure,Ça va s'arrêter.try Code suivant le bloc ;exceptBlocCode;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()FonctionsTout sera jeté.ValueErrorAnomalie,Alorstry:ArrièrebreakDéclarationsJe ne l'aurais pas fait., Le programme va continuer à tourner ;int()FonctionsJe n'aurais pasValueErrorAnomalie,tryBloc Peut continuer à exécuter ,Jusqu'à ce qu'il touchebreakDéclarations,Le programme sort de la boucle;tryAvecexceptLes 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éclarationException au traitement intermédiaire.
try Avec exceptL'utilisation de:

Analyser comme suit::
tryLe bloc d'instruction est exécuté en premier .- Si
tryDans le bloc de déclaration Une exception s'est produite lors de l'exécution d'une instruction ,PythonOn y va.exceptSection,Juger de haut en bas L'objet d'exception lancé est - il lié àexceptLes classes d'exception suivantes correspondent ,Et exécute le premierexceptBloc 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
exceptBloc d'instruction après l'instruction ,Traitement des exceptions terminé.- Si
tryUne exception s'est produite dans une déclaration d'un bloc de déclaration ,Et il n'y a pas de correspondanceexceptClause, Il n'y a pas non plus deexceptSection, L'exception sera soumise au niveau supérieurtry/exceptInstruction 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
tryAucune instruction dans le bloc d'instruction n'a été exécutée sans exception ,PythonSera mis en œuvreelseBloc de déclaration après déclaration.- Fin de la mise en œuvre
exceptDéclaration de gestion des exceptions après ouelseAprès le bloc de déclaration suivant , Le programme doit être exécutéfinallyBloc 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
tryEt unexceptBloc de déclaration,elseEtfinallyLe 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 queaValeur de,bAucune 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 .

BaseExceptionToutes les classes de base anormalesSystemExitL'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 sortieExceptionErreur 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 baseArithmeticErrorToutes les classes de base avec des erreurs de calcul numériqueFloatingPointErrorErreur de calcul du point flottantOverflowErrorL'opération numérique dépasse la limite maximaleZeroDivisionErrorSauf(Ou prendre un moule)Zéro. (Tous les types de données)AssertionErrorL'assertion a échouéAttributeErrorL'objet n'a pas cette propriétéEOFErrorPas d'entrée intégrée,ArrivéeEOF MarquageEnvironmentErrorMauvaise classe de base du système d'exploitationIOErrorEntrée/L'opération de sortie a échouéOSErrorErreur du système d'exploitationWindowsErrorL'appel système a échouéImportErrorImporter un module/L'objet a échouéLookupErrorClasse de base pour la requête de données invalideIndexErrorCet index n'existe pas dans la séquence(index)KeyErrorIl n'y a pas cette clé dans la carteMemoryErrorErreur de débordement de mémoire(PourPython L'interpréteur n'est pas fatal)NameErrorNon déclaré/Initialiser l'objet (Pas de propriétés)UnboundLocalErrorAccès aux variables locales non initialiséesReferenceErrorFaible référence(Weak reference)Tentative d'accéder à un objet qui a été ramasséRuntimeErrorErreur générale d'exécutionNotImplementedErrorMéthodes non encore mises en oeuvreSyntaxErrorPythonErreur de syntaxeIndentationErrorErreur d'indentationTabErrorTabMélanger avec des espacesSystemErrorErreur générale du système d'interpréteurTypeErrorAction invalide pour le typeValueError Paramètre non valable passéUnicodeErrorUnicodeErreurs associéesUnicodeDecodeErrorUnicode Erreur de décodageUnicodeEncodeErrorUnicode Erreur de codageUnicodeTranslateErrorUnicodeErreur de conversionWarningClasse de base de l'avertissementDeprecationWarningAvertissement concernant les caractéristiques dépréciéesFutureWarningMise en garde contre les changements sémantiques futurs dans la constructionOverflowWarningL'ancien sur le levage automatique à long(long)AvertissementPendingDeprecationWarningAvertissement concernant l'abandon des propriétésRuntimeWarningComportement d'exécution suspect(runtime behavior)AvertissementSyntaxWarningAvertissement de syntaxe douteuseUserWarningAvertissement 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.