程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

【 traitement des exceptions python】: comment traiter les erreurs de déclaration des exceptions?

編輯:Python

Colonnes de la série:【pythonNotes d'étude】

Table des matières

  • 1️⃣C'est écrit devant
  • 2️⃣Qu'est - ce qu'une anomalie??
  • 3️⃣Comment gérer les exceptions?
  • 4️⃣try Avec except
    • *Utilisation
    • *Exemple
  • 5️⃣pythonException standard
  • 6️⃣À la fin


1️⃣C'est écrit devant

Aujourd'huiPythonLe contenu des notes est:

  • Gestion des exceptions

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 .

2️⃣Qu'est - ce qu'une anomalie??

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 .

3️⃣Comment gérer les exceptions?

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:

  • Ici, Il y a deux nouveaux mots clés :tryEtexcept;
  • J'ai déjà dit, Quand la valeur que nous avons saisie n'est pas un entier ,int()FonctionsVa lancerValueErrorAnomalie;
  • EttryBloc Détecté dans ValueErrorAnomalieHeure,Ça va s'arrêter.try Code suivant le bloc ;
  • Passage à la mise en œuvreexceptBlocCode;
  • Quandexcept 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 ;
  • Il est important de noter que, Tant que l'entrée n'est pas un entier ,int()FonctionsTout sera jeté.ValueErrorAnomalie,Alorstry:ArrièrebreakDéclarationsJe ne l'aurais pas fait., Le programme va continuer à tourner ;
  • Enfin, Lorsque la valeur saisie est un entier ,int()FonctionsJe n'aurais pasValueErrorAnomalie,tryBloc Peut continuer à exécuter ,Jusqu'à ce qu'il touchebreakDéclarations,Le programme sort de la boucle;

4️⃣try Avec except

  • 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 ;

*Utilisation

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::

  • try Le bloc d'instruction est exécuté en premier .
  • SitryDans 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é à 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é.
  • Sitry Une 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 de exceptSection, L'exception sera soumise au niveau supérieur try/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.
  • Sitry Aucune 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 œuvreexcept Déclaration de gestion des exceptions après ou else 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 tryEt unexceptBloc de déclaration,elseEtfinally Le bloc de déclaration est facultatif .

*Exemple

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 .

  • 2)Sib La valeur de est attribuée à 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 .

5️⃣pythonException standard

Nom de l'exceptionDescriptionBaseExceptionToutes 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 utilisateur

La structure générale de la classe d'exception est la suivante :

6️⃣À la fin

C'est bon,Voici les notes d'aujourd'hui,Bienvenue dans la section commentaires pour discuter.


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved