Intentarem (try en anglès) llegir una entrada de l'usuari. Ctrl-d i mirem que passa.
>>> s = raw_input('Enter something --> ') Enter something --> Traceback (most recent call last): File "<stdin>", line 1, in ? EOFError
Python aixeca un error anomenat EOFError
que bàsicament indica que
s'ha trobat un fi de fitxer on no s'esperava. Això es representa per
Ctrl-d).
A continuació veurem com gestionar aquests errors.
Podem gestionar les excepcions fent servir la sentència try..except
.
Bàsicament posem el nostre codi habitual entre un bloc try i tots els nostres
controladors d'excepcions al bloc except.
Example 13.1. Gestió d'excepcions
#!/usr/bin/python # Filename: try_except.py import sys try: s = raw_input('Enter something --> ') except EOFError: print '\nWhy did you do an EOF on me?' sys.exit() # sortim del programa except: print '\nSome error/exception occurred.' # aquí no sortim del programa print 'Done'
$ python try_except.py Enter something --> Why did you do an EOF on me? $ python try_except.py Enter something --> Python is exceptional! Done
Posem totes les sentències que puguin aixecar un error al
bloc try
i tractem els errors i les
excepcions que es produeixin al bloc except
.
La clàusula except
permet gestionar un
error o excepció especificat, però també una llista d'aquests
entre parèntesis.
Si no s'especifica el nom de cap error o excepció, Python
considera que ha de tractar-los tots.
Ha d'haver-hi com a mínim una clàusula except
associada amb cada clàusula try
.
Si no tractem algun error o excepció, es realitza el tractament per defecte: aturar l'execució del programa i escriure un missatge. Ja ens ho em trobat.
També podem afegir una clàusula else
associada
amb un bloc try..catch
, que s'executarà
quan no hi hagi cap excepció.
Podem també obtenir la instància de l'excepció, per a disposar d'informació addicional sobre aquesta. Ho podem veure al següent exemple.