Diferència entre revisions de la pàgina «Excepcions»
(Hi ha 3 revisions intermèdies del mateix usuari que no es mostren) | |||
Línia 7: | Línia 7: | ||
− | + | == Control d'errors == | |
+ | L'aplicació més important de les excepcions és el control d'errors. Un típic cas sol ser capturar un error o un senyal d'algun tipus i gestionar-ho des del programa enlloc del comportament per defecte. | ||
+ | En molts llenguatges el típic control d'errors es fa amb la sentència TRY...CATCH . En el cas del Python és TRY...EXCEPT . | ||
+ | |||
+ | Aquest exemple controla la interrupció per teclat (CTRL+C) i no deixa que l'usuari surti: | ||
<syntaxhighlight lang="python"> | <syntaxhighlight lang="python"> | ||
while True: | while True: | ||
try: | try: | ||
− | + | a = raw_input("Entra dades: ") | |
− | + | if a == "sisplau": | |
− | + | break | |
− | + | print str(a) | |
− | |||
− | |||
except KeyboardInterrupt: | except KeyboardInterrupt: | ||
print "vols sortir, oi? Digues la paraula magica..." | print "vols sortir, oi? Digues la paraula magica..." | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | |||
+ | També podem capturar TOTES les excepcions (errors) si no especifiquem el tipus: | ||
+ | <syntaxhighlight lang="python"> | ||
+ | while True: | ||
+ | try: | ||
+ | a = raw_input("Entra un nombre: ") | ||
+ | if a == "sisplau": | ||
+ | break | ||
+ | print int(a) | ||
+ | except : | ||
+ | print "ERROR desconegut (tot i que imagino que no has entrat un nombre... oi?)" | ||
+ | </syntaxhighlight> | ||
+ | <br> | ||
+ | |||
+ | == Iteracions simplificades == | ||
+ | Una altra típica aplicació és simplifcar el control d'errors de les iteracions o de les propietats d'un objecte o diccionari. Enlloc de preguntar si existeix o no la propietat, executem, i si hi ha un error seguim: | ||
+ | |||
+ | <syntaxhighlight lang="python"> | ||
+ | keys = ["a","b"] | ||
+ | dades = {"a":1} | ||
+ | for key in keys: | ||
+ | try: | ||
+ | print key,dades[key] | ||
+ | except: | ||
+ | print "la clau",key,"no existeix" | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |||
+ | == Llançament d'excepcions personalitzades == | ||
+ | ... |
Revisió de 16:26, 20 nov 2014
El millor per aclarir el tema d'excepcions és llegir els articles a:
- Wikipedia: http://es.wikipedia.org/wiki/Manejo_de_excepciones
- python.org: http://docs.python.org/2/tutorial/errors.html
- Per llançar una excepció: http://docs.python.org/2/tutorial/errors.html#raising-exceptions
- Crear les nostres pròpies (user-defined exceptions): http://docs.python.org/2/tutorial/errors.html#user-defined-exceptions
- Llistat d'excepcions de Python: http://docs.python.org/2/library/exceptions.html
Control d'errors[modifica]
L'aplicació més important de les excepcions és el control d'errors. Un típic cas sol ser capturar un error o un senyal d'algun tipus i gestionar-ho des del programa enlloc del comportament per defecte.
En molts llenguatges el típic control d'errors es fa amb la sentència TRY...CATCH . En el cas del Python és TRY...EXCEPT .
Aquest exemple controla la interrupció per teclat (CTRL+C) i no deixa que l'usuari surti:
while True:
try:
a = raw_input("Entra dades: ")
if a == "sisplau":
break
print str(a)
except KeyboardInterrupt:
print "vols sortir, oi? Digues la paraula magica..."
També podem capturar TOTES les excepcions (errors) si no especifiquem el tipus:
while True:
try:
a = raw_input("Entra un nombre: ")
if a == "sisplau":
break
print int(a)
except :
print "ERROR desconegut (tot i que imagino que no has entrat un nombre... oi?)"
Iteracions simplificades[modifica]
Una altra típica aplicació és simplifcar el control d'errors de les iteracions o de les propietats d'un objecte o diccionari. Enlloc de preguntar si existeix o no la propietat, executem, i si hi ha un error seguim:
keys = ["a","b"]
dades = {"a":1}
for key in keys:
try:
print key,dades[key]
except:
print "la clau",key,"no existeix"
Llançament d'excepcions personalitzades[modifica]
...