journée d'étude Python 31 (anomalies, capture anormale)

A propos des procédures électives, en effet, un peu occupé récemment, aucune chance d'os d'examen, module pickle en deux parties, le stockage de données dictionnaire et la lecture devient un problème, savoir à peu près le principe, mais l'opération spécifique peut encore avoir à revenir en arrière et prendre un autre regard, maintenant à l'avance pour commencer à apprendre de nouvelles connaissances, bien que le sentiment aujourd'hui des méthodes associées de str oublier est propre, mais je PyCharm.

Aujourd'hui, le contenu principal est de se sentir anormal, en fait, un peu comme le début vient d'apprendre, est relativement simple.

  Une exception est le programme de génération de signal d'erreur est en cours d'exécution (lorsque l'erreur de programme se produit, une exception, si le programme ne gère pas, il va jeter l'exception, exécuter le programme sera terminé aussi), en python, déclenchements intempestifs exceptions sont les suivantes:

 

 

   Les erreurs sont divisées en deux types:

  1. erreurs de syntaxe, PyCharm de base vous aidera à montrer, ne pas commettre

  2. Les erreurs logiques, pas facile à voir, quelle que soit PyCharm, l'interpréteur Python est seulement l'amour, mais attendre jusqu'à ce que le temps est vraiment en cours d'exécution

# TypeError: type int n'est pas l'itération 
pour I en 3. :
     Passe 
# un ValueError 
NUM = INPUT ( " >>: " ) # entrée Bonjour 
int (NUM) 

# NameError 
AAA 

# IndexError 
L = [ ' Egon ' , ' AA ' ] 
L [ . 3 ] 

# un KeyError 
DIC = { ' nom ' : ' Egon ' } 
DIC [ ' âge ' ] 

#AttributeError 
classe Foo: Passe 
foo.x 

# la ZeroDivisionError: Impossible de terminer le calcul 
. RES1 = 1/ 0 
RES2 . = + 1 ' STR '
 
2. Les erreurs logiques

  Les éléments suivants sont la plupart importante d'aujourd'hui:

  Différentes anomalies en python peuvent être de différents types (classes et le type unifié de python, à savoir le type de catégorie) pour identifier un indicateur d'anomalie mal

  Les éléments suivants sont couramment utilisés exception:

AttributeError aucune tentative d'accès à un arbre d'objets, tels que foo.x, mais foo n'attribue pas les X- 
entrée IOError / anomalies de sortie, essentiellement ne peut pas ouvrir le fichier 
ImportError pas du module d' importation ou de l' emballage, essentiellement une question ou le nom chemin est erroné 
erreur de syntaxe IndentationError (sous - classe), le code n'a pas été correctement aligné 
IndexError index indice hors des limites de séquence, par exemple lorsque seulement trois éléments de x, tente d'accéder à x [ 5. ] 
une tentative d'KeyError pour accéder au dictionnaire n'existe pas dans la liaison 
du KeyboardInterrupt Ctrl + C est pressée 
NameError utiliser une variable n'a pas été donné un objet 
SyntaxError code Python est illégal, le code ne (pense personnellement qu'il est une erreur de syntaxe, de mauvais) compile pas 
TypeError type d'objet entrant ne se conforme pas aux exigences de la 
tentative UnboundLocalError d'accéder à une variable locale n'a pas été réglée , essentiellement en raison d'une autre variable globale du même nom, 
conduit à penser que vous accédez à ce 
appel entrant ValueError ne vous attendez pas à une valeur, même si la valeur du type est correcte des 

anomalies communes

  Plus anormale (ou à un libre par un faux nouveau):

ArithmeticError 
AssertionError 
AttributeError 
BaseException 
BufferError 
BytesWarning 
DeprecationWarning 
EnvironmentError 
EOFError 
Exception 
FloatingPointError 
FutureWarning 
GeneratorExit 
ImportError 
ImportWarning 
IndentationError 
IndexError 
IOError 
KeyboardInterrupt 
KeyError 
LookupError 
MemoryError 
NameError 
NotImplementedError 
OSError 
OverflowError 
PendingDeprecationWarning 
ReferenceError 
RuntimeError 
RuntimeWarning  
StandardError
StopIteration 
SyntaxError 
SyntaxWarning 
SystemError 
SystemExit 
TabError 
TypeError 
UnboundLocalError 
UnicodeDecodeError 
UnicodeEncodeError 
UnicodeError 
UnicodeTranslateError 
UnicodeWarning 
UserWarning 
ValueError 
Avertissement 
ZeroDivisionError 

更多异常

  Afin d'assurer la robustesse et le programme de tolérance aux pannes, ce programme ne se bloque pas quand il rencontre une erreur, nous devons faire face à des exceptions,

   Si la condition d'erreur est prévisible, nous devons traiter les cas suivants: la prévention avant l'erreur

  Avant l'opération ont également eu:

= 10 AGE
 du tout vrai: 
    age = INPUT ( ' >>: ' ) .strip ()
     SI age.isdigit (): # seulement quand une chaîne est un nombre entier de l' âge, le code suivant ne sera pas une erreur, la condition est prédire l' 
        âge = int (Age)
         SI Âge == de AGE:
             Imprimer ( ' vous OBTENU ' )
             PAUSE

Si la condition d'erreur est imprévisible, vous devez utiliser try ... except: traitement après une erreur

# La syntaxe de base de 
l'essai : 
    bloc de code à détecter à l' 
exception des types d'exception: 
    l'essai en cas de détection d' anomalie, la logique de la mise en œuvre de cette position 
# exemple 
l'essai : 
    F = (Open « a.txt » ) 
    G = (line.strip () pour la ligne en F)
     Imprimer (Next (G))
     Imprimer (Next (G))
     Imprimer (Next (G))
     Imprimer (Next (G))
     Imprimer (Next (G))
 l'exception du StopIteration: 
    f.close ()

  

# 1 classe d'exception ne peut être utilisé pour gérer les exceptions spécifiques, si vous ne pouvez pas traiter à l' exception non spécifiée. 
S1 = ' Bonjour ' 
l'essai : 
    int (S1) 
l'exception IndexError AS E: # exception uncaught, le programme donné directement 
    Imprimer E 

# 2 multibranche 
S1 = ' Bonjour ' 
l'essai : 
    int (S1) 
l'exception IndexError AS E:
     Imprimer (E )
 l'exception d' un KeyError AS E:
     Print (E)
 l'exception d' un ValueError AS E:
     Print (E) 

# . 3 exception d'exception universelle 
S1 = ' Bonjour ' 
l'essai :
    int (s1) 
l'exception Exception AS E:
     Print (E) 

# 4 anomalies multisuccursales et universel anormale 
# 4.1 si vous voulez que l'effet, peu importe ce qui est anormal, nous avons unifié mis au rebut, ou d' utiliser pour traiter avec eux la même logique de code, montrez ainsi en gras pour le faire, il n'y a qu'un seul assez d'exception. 
# 4.2 si vous voulez que l' effet, pour différentes exceptions dont nous avons besoin de personnaliser une logique différente de traitement, il serait nécessaire d'utiliser une multi-branche. 

# 5 peut être un multi-branche plus tard , une exception 
S1 = ' Bonjour ' 
l'essai : 
    int (S1) 
l'exception IndexError AS E:
     Print (E)
 l'exception d' un KeyError AS E:
     Print (E)
 l'exception d' un ValueError AS E:
     Print (E)
 l'exception Exception E AS:
     Imprimer (E)

# 6 autres d'anomalie 
S1 = ' Bonjour ' 
l'essai : 
    int (S1) 
l'exception IndexError AS E:
     Print (E)
 l'exception d' un KeyError AS E:
     Print (E)
 l'exception d' un ValueError AS E:
     Print (E)
 # l'exception Exception AS E: 
#     Imprimer (E) 
l'autre :
     Imprimer ( « dans un bloc de code try est exécuté sans exception I » )
 a finalement :
     Imprimer ( « si anormale ou non, le module sera exécuté, effectue habituellement de nettoyage » ) 

# 7 déclencheur actif anormal 
essayer:
     L'augmentation TypeError ( ' erreur de type ' )
 l'exception Exception AS E:
     Imprimer (E) 

# 8 coutume exception. 
Classe EgonException (BaseException):
     DEF  le __init__ (Self, MSG): 
        self.msg = MSG
     DEF  __str__ (auto):
         retour auto un .msg 

l'essai :
     l'augmentation EgonException ( ' erreur de type ' )
 l'exception EgonException AS E:
     Print (E) 

# . 9 affirme: assert état 
assert . 1. 1 ==  
le Assertion 1 == 2 # 10 try..except résume

 Anormaux avantages de capture:

1: gestion des erreurs et le vrai travail séparé
2: code plus facile à organiser, plus clairs et des tâches complexes plus faciles à mettre en œuvre;
3: Sans aucun doute, plus sûr, et ne sera pas pour un contrôle mineur du programme de façon inattendue accident a;

 

Principalement des connaissances théoriques, cette dernière utilisation est la clé, comme je veux passer en revue les modules pickle et os, voilà.

Je suppose que tu aimes

Origine www.cnblogs.com/xiaoyaotx/p/12563464.html
conseillé
Classement