Je publierai ce que j'ai pris des notes sur la gestion des erreurs en Python. Veuillez vous référer au lien ci-dessous pour plus de détails.
https://docs.python.jp/3/tutorial/errors.html
Python 3.x
Il existe (au moins) deux types d'erreurs distincts. C'est une erreur de syntaxe et une exception.
Une erreur de syntaxe fait référence à un problème avec la syntaxe de Python. Cela peut également être une erreur externe dans le code. Puisque Python exprime des blocs de code par indentation, je pense que c'est un langage hautement lisible et moins susceptible de provoquer des erreurs de syntaxe.
D'autre part, l'exception peut être considérée comme une erreur interne dans le code. Par exemple, le code suivant est correct dans le code Python, mais mathématiquement étrange, n'est-ce pas?
test = 10 / 0 # <=Il ne peut pas être divisé par 0!
De cette façon, le problème qui se produit lorsque le code est exécuté est une exception.
Les erreurs de syntaxe sont automatiquement détectées par l'interpréteur lorsqu'il interprète le programme, vous pouvez donc corriger la partie en colère.
Mais comment gérez-vous les exceptions?
Python fournit une syntaxe telle que «try» et «except »pour gérer les exceptions. Regardons un exemple concret.
try:
answer = 10 / 0
except ZeroDivisionError:
print("divided by zero!!!")
Il y a deux points dans le code ci-dessus.
try
, spécifiez le
type` de l'exception qui peut se produire dans la clause try, et exécutez le traitement dans ce cas.Dans ce cas, l'exception «ZeroDivisionError», qui indique que la division par 0 a été effectuée, est générée à partir de la clause try, et elle est traitée sous «sauf ZeroDivisionError».
Comme vous pouvez le voir, utilisez try ~ except
pour gérer les exceptions.
Définissez la fonction divide
, qui prend deux nombres comme arguments et renvoie le quotient, comme suit.
def divide(x, y):
answer = x / y
return answer
Cela semble bon à première vue. Cependant, comme nous l'avons vu, nous devons faire attention à la division.
Lorsque divide (10, 0)
etc. est exécuté, ZeroDivisionError
se produira.
Améliorons la fonction comme suit, en considérant le cas où 0 est passé comme deuxième argument (0 est passé à la suite d'un calcul au lieu de littéralement 0).
import math
def divide(x, y):
try:
answer = x / y
except ZeroDivisionError:
print("numbers cannot be divided by zero!")
answer = math.nan
return answer
Même si vous le divisez par 0, le programme fonctionnera pour le moment!
Cependant, que se passe-t-il si vous recevez un argument inattendu, tel qu'une chaîne
ou tapple
...
Je ne décrirai pas la réponse ici, mais essayez de la mettre en œuvre en gardant à l'esprit les points suivants.
Si vous vous souciez trop des exceptions, votre code peut gonfler et gâcher la lisibilité, alors pensez au cas par cas.
Même si une exception se produit ou que vous ne vous mettez pas en colère, vous voudrez peut-être faire quelque chose en commun. C'est un peu douloureux comme exemple concret, mais regardez le code ci-dessous.
try:
answer = 10 / 0
except ZeroDivisionError as e:
answer = math.nan
finally:
print(answer)
Un nouveau mot-clé appelé «enfin» est apparu.
En utilisant ce mot-clé, le traitement spécifié dans la clause finally
sera effectué indépendamment du fait qu'une exception se produise ou non.
A propos, ʻas e est utilisé dans la clause ʻexcept
, mais c'est pour contenir l'objet d'exception généré dans une variable appelée ʻe` afin qu'il puisse être référencé dans les blocs suivants.
Par conséquent, si vous modifiez le code comme indiqué ci-dessous, le contenu de l'exception sera affiché.
#réduction
except ZeroDivisionError as e:
print(type(e)) # => <class 'ZeroDivisionError'>
print(e.args) # => ('division by zero',)
print(e) # => division by zero
En Python, la portée des variables est essentiellement déterminée par l'indentation du code.
Ensuite, la variable ʻam_i_visible définie dans le code suivant peut-elle être référencée dans le premier
print () `?
try:
am_i_visible = "yes"
except:
do_something()
print(am_i_visible) # => ???
Vous pouvez vous référer à la bonne réponse. Je pense que «oui» est sorti.
Dans ce cas, vous pouvez y faire référence car le retrait est utilisé pour clarifier la distance de la clause try
.
Python peut être un peu déroutant dans sa portée ...
Dans l'instruction for
ci-dessous, la variable n
devient une variable globale ...
sum = 0
for n in range(1, 5):
sum = sum + n
print(n) # => 4
C'est facile, mais j'ai résumé la gestion des erreurs de Python. Il y a encore plus à aborder sur la gestion des exceptions de Python, mais c'est tout.
Je suis encore nouveau sur Python, donc si vous avez des conseils, écrivez-les dans les commentaires.
Recommended Posts