Diferència entre revisions de la pàgina «Excepcions»

De Cacauet Wiki
Salta a la navegació Salta a la cerca
(Es crea la pàgina amb «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…».)
 
 
(Hi ha 4 revisions intermèdies del mateix usuari que no es mostren)
Línia 2: Línia 2:
 
* Wikipedia: http://es.wikipedia.org/wiki/Manejo_de_excepciones
 
* Wikipedia: http://es.wikipedia.org/wiki/Manejo_de_excepciones
 
* python.org: http://docs.python.org/2/tutorial/errors.html
 
* 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
 
* Llistat d'excepcions de Python: http://docs.python.org/2/library/exceptions.html
  
  
Volem, però, afegir un exemple del management de les excepcions. 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. '''Farem un programa que controli la interrupció per teclat (CTRL+C) i no deixar que l'usuari surti. Només permetrem acabar el programa quan l'usuari entri una paraula determinada''':
+
== 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:
         while True:
+
         a = raw_input("Entra dades: ")
            a = raw_input("Entra dades: ")
+
        if a == "sisplau":
            if a != "sisplau":
+
            break
                print str(a)
+
        print str(a)
            else:
 
                exit()
 
 
     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:


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]

...