Python fournit deux fonctions très importantes pour gérer les exceptions et les erreurs qui se produisent lors de l'exécution des programmes Python. Vous pouvez utiliser cette fonctionnalité pour déboguer des programmes Python.
Nous pouvons ouvrir inactif -> F1 pour afficher le document. Il contient de nombreux types d'exceptions, comme le montre l'image :
Une exception est un événement qui se produit pendant l'exécution du programme et affecte l'exécution normale du programme.
Généralement, une exception se produit lorsque Python ne peut pas gérer le programme normalement.
Les exceptions sont des objets Python qui représentent une erreur.
Lorsqu'une exception se produit dans un script Python, nous devons l'attraper et la gérer, sinon le programme mettra fin à son exécution.
Pour intercepter les exceptions, les instructions try/sauf peuvent être utilisées.
L'instruction try/sauf est utilisée pour détecter les erreurs dans le bloc d'instruction try, afin que l'instruction except puisse capturer les informations d'exception et les gérer.
Si vous ne souhaitez pas terminer votre programme lorsqu'une exception se produit, interceptez-la simplement en essayant.
Syntaxe :
Ce qui suit est la syntaxe d'un simple try....sauf...else :
try
:
#运行别的代码
except
:
#如果在try部份引发了'name'异常
except
,:
#如果引发了'name'异常,获得附加的数据
else
:
#如果没有异常发生
Le principe de fonctionnement de try est qu'après avoir commencé un essai , Python marque le contexte du programme en cours afin que vous puissiez revenir ici lorsqu'une exception se produit. La clause try est exécutée en premier, et ce qui se passe ensuite dépend si une exception se produit pendant l'exécution.
Si une exception se produit lors de l'exécution de l'instruction après try, python reviendra en arrière pour essayer d'exécuter la première clause except correspondant à l'exception. Une fois l'exception traitée, le flux de contrôle passera par l'intégralité de l'instruction try. (sauf si c'est le cas. Une nouvelle exception est levée lors de la gestion de l'exception).
#Si une exception se produit dans l'instruction après try, mais qu'il n'y a pas de clause except correspondante, l'exception sera soumise au try supérieur, ou au niveau supérieur du programme (cela mettra fin au programme et imprimer le message d'erreur provincial).
#Si aucune exception ne se produit lorsque la clause try est exécutée, python exécutera l'instruction après l'instruction else (s'il y en a une autre), puis le flux de contrôle passera par l'intégralité de l'instruction try.
Ce qui suit est un exemple simple, il ouvre un fichier, écrit le contenu dans le fichier et aucune exception ne se produit :
#!/usr/bin/python
try
:
fh
=
open
(
"testfile"
,
"w"
)
fh.write(
"This is my test file for exception handling!!"
)
except
IOError:
print
"Error: can't find file or read data"
else
:
print
"Written content in the file successfully"
fh.close()
Le résultat de sortie du programme ci-dessus :
Written content
in
the
file
successfully
Voici un exemple simple, il ouvre un fichier et dans ce fichier Le contenu est écrit, mais le fichier n'a pas d'autorisation en écriture et une exception s'est produite :
#!/usr/bin/python
try
:
fh
=
open
(
"testfile"
,
"r"
)
fh.write(
"This is my test file for exception handling!!"
)
except
IOError:
print
"Error: can't find file or read data"
else
:
print
"Written content in the file successfully"
Les résultats de sortie du programme ci-dessus :
Error: can't find
file
or
read data
Vous pouvez utiliser le type sauf sans exception, comme indiqué dans l'exemple suivant :
try
:
You do your operations here;
......................
except
:
If there
is
any
exception, then execute this block.
......................
else
:
If there
is
no exception then execute this block.
Vous pouvez également utiliser la même instruction except pour gérer plusieurs messages d'exception, comme indiqué ci-dessous :
try
:
You do your operations here;
......................
except
(Exception1[, Exception2[,...ExceptionN]]]):
If there
is
any
exception
from
the given exception
list
,
then execute this block.
......................
else
:
If there
is
no exception then execute this block.
essayez- L'instruction final exécutera le dernier code, qu'une exception se produise ou non.
try
:
finally
:
#退出try时总会执行
raise
Remarque : Vous pouvez Utilisez l'instruction except ou l'instruction enfin, mais pas les deux en même temps. L'instruction else ne peut pas être utilisée avec l'instruction enfin
#!/usr/bin/python
try
:
fh
=
open
(
"testfile"
,
"w"
)
fh.write(
"This is my test file for exception handling!!"
)
finally
:
print
"Error: can't find file or read data"
Si le fichier ouvert ne dispose pas d'autorisations d'écriture, le résultat ressemblera à ceci : Comme suit :
Error: can't find
file
or
read data
#!/usr/bin/python
🎜>try
:
fh
=
open
(
"testfile"
,
"w"
)
try
:
fh.write(
"This is my test file for exception handling!!"
)
print
"Error: can't find file or read data"
Lorsqu'une exception est levée dans le bloc try, le code du bloc final est exécuté immédiatement.
Une fois toutes les instructions du bloc final exécutées, l'exception est à nouveau déclenchée et le code du bloc except est exécuté.
Le contenu du paramètre est différent de l'exception.
Une exception peut avoir des paramètres, qui peuvent être utilisés comme paramètres d'informations d'exception de sortie.
Vous pouvez capturer les paramètres d'exception via l'instruction except, comme suit :
try
:
You do your operations here;
......................
except
ExceptionType, Argument:
You can
print
value of Argument here...
Les valeurs d'exception reçues par les variables sont généralement incluses dans l'instruction d'exception. Les variables sous forme de tuples peuvent recevoir une ou plusieurs valeurs.
le tuple contient généralement une mauvaise chaîne, un mauvais numéro, une mauvaise position.
Voici des exemples d'une seule exception :
#!/usr/bin/python
# Define a function here.
def
temp_convert(var):
try
:
return
int
(var)
except
ValueError, Argument:
print
"The argument does not contain numbersn"
, Argument
# Call above function here.
temp_convert(
"xyz"
);
Les résultats d'exécution de le programme ci-dessus sont les suivants :
The argument does
not
contain numbers
invalid literal
for
int
() with base
10
:
'xyz'
Nous pouvons utiliser l'instruction raise pour déclencher l'exception nous-mêmes
Le format de la syntaxe raise est le suivant :
raise
[Exception [, args [, traceback]]]
def
functionName( level ):
if
level <code>1
:
raise
"Invalid level!"
, level
# The code below to this would not be executed
# if we raise the exception
Remarque : Afin d'intercepter les exceptions, l'instruction "sauf" doit utiliser la même exception pour lancer l'objet de classe ou la chaîne.
Par exemple, si nous captons l'exception ci-dessus, l'instruction "sauf" est la suivante :
try
:
Business Logic here...
except
"Invalid level!"
:
Exception handling here...
else
:
Rest of the code here...
En créant une nouvelle classe d'exceptions, les programmes peuvent nommer leurs propres exceptions. Les exceptions doivent généralement hériter de la classe Exception, directement ou indirectement.
Ce qui suit est un exemple lié à RuntimeError. Une classe est créée dans l'exemple. La classe de base est RuntimeError, qui est utilisée pour générer plus d'informations lorsqu'une exception est déclenchée.
Dans le bloc d'instruction try, l'instruction except block est exécutée après l'exception définie par l'utilisateur. La variable e est utilisée pour créer une instance de la classe Networkerror.
class
Networkerror(RuntimeError):
def
__init__(
self
, arg):
self
.args
=
arg
Après avoir défini la classe ci-dessus, vous pouvez déclencher l'exception comme suit :
try
:
raise
Networkerror(
"Bad hostname"
)
except
Networkerror,e:
print
e.args
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!