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.