Podem aixecar excepcions fent servir la sentència
raise
. Cal especificar el nom de l'error o excepció i
la instància de l'excepció que ha de ser llençada.
Aquests errors o excepcions han de ser derivats directament o indirecta
de la classe Error
o de
Exception
respectivament.
Example 13.2. Com aixecar excepcions
#!/usr/bin/python # Filename: raising.py class ShortInputException(Exception): '''Una classe d'excepció definida per l'usuari.''' def __init__(self, length, atleast): Exception.__init__(self) self.length = length self.atleast = atleast try: s = raw_input('Enter something --> ') if len(s) < 3: raise ShortInputException(len(s), 3) # La resta del programa continua com sempre a partir d'aquí except EOFError: print '\nWhy did you do an EOF on me?' except ShortInputException, x: print 'ShortInputException: The input was of length %d, \ was expecting at least %d' % (x.length, x.atleast) else: print 'No exception was raised.'
$ python raising.py Enter something --> Why did you do an EOF on me? $ python raising.py Enter something --> ab ShortInputException: The input was of length 2, was expecting at least 3 $ python raising.py Enter something --> abc No exception was raised.
L'exemple crea una classe d'excepció tot i que podríem haver fet
servir qualsevol de les predefinides. La nova classe d'excepció
és ShortInputException
. Disposa de dos
camps - length
que guarda la longitud de
l'entrada, i atleast
que indica la longitud
mínima que esperava el programa.
A la clàusula except
, mencionem la classe
d'error i la variable que emmagatzemarà la correspondent
instància d'error o excepció d'una manera anàloga als arguments
d'una crida a una funció.
Amb la clàusula except
fem servir els camps
length
i atleast
per a
mostrar un missatge adequat a l'usuari.