Sunday, 30 April 2017
Excepciones PDF Print E-mail
Written by Administrator   
Monday, 22 September 2008 20:36

Manejo de excepciones

El manejo de excepciones es una estructura de control utilizada en los lenguajes de programación, diseñada para manejar condiciones anormales que pueden ser tratadas por el mismo programa durante su ejecusión.
Sintaxis:

try:

block-1 ...

except Exception1:

handler-1 ...

except Exception2:

handler-2 ...

else:

else-block

finally:

final-block

try: delimita el bloque de código que queremos ejecutar,
except: delimita el código que deberá ejecutarse en caso que el código bajo try retorne una excepción
finally: Se utiliza para asegurar que el código será "siempre" ejecutado.

Errores

>>> 10 * (1/0)
Traceback (innermost last):
File "", line 1
ZeroDivisionError: integer division or modulo
>>> 4 + fiambre*3
Traceback (innermost last):
File "", line 1
NameError: fiambre
>>> "2" + 2
Traceback (innermost last):
File "", line 1
TypeError: illegal argument type for built-in operation

 

Ejemplos:

1)

try:

print 0/0

except:

print "Houston, we have a problem..."

Lo cual va imprimir "Houston, we have a problem..."

 

>>> while 1:
... try:

... x = int(raw_input("Introduce un numero: "))
... break

... except ValueError:

... print "Huy! No es un numero. Prueba de nuevo..."

...

La sentencia try funciona así­: 

 

  • Primero, la clausula try (las sentencias entre las palabras reservadas try y except) es ejecutada.
  • Si no ocurren excepciones, la clausula except es pasada por alto y se finaliza la ejecución de la sentencia try.
  • Si ocurre una excepción durante la ejecución de la clausula try, el resto de la clausula se pasa por alto. Entonces si su tipo concuerda con la excepción nombrada después de la palabra reservada except, se ejecuta la clausula except, y después de la ejecución continúa después de la sentencia try.
  • Si una excepción ocurre y no concuerda con la excepción nombrada en la cláusula except, ésta es pasada a sentencias try externas; si no se encuentra una que la maneje, es una excepción sin manejo, y la ejecución se detiene con un mensaje como se muestra arriba.

Algunas excepciones son (fuente: http://mundogeek.net/archivos/2008/03/19/python-excepciones/):

  • BaseException: Clase de la que heredan todas las excepciones.
  • Exception(BaseException): Super clase de todas las excepciones que no sean de salida.
  • GeneratorExit(Exception): Se pide que se salga de un generador.
  • StandarError(Exception): Clase base para todas las excepciones que no tengan que ver con salir del intérprete.
  • ArithmeticError(StandardError): Clase base para los errores aritméticos.
  • FloatingPointError(ArithmeticError): Error en una operación de coma flotante.
  • OverflowError(ArithmeticError): Resultado demasiado grande para poder representarse.
  • ZeroDivisionError(ArithmeticError): Lanzada cuando el segundo argumento de una operación de división o módulo era 0
  • AssertionError(StandardError): Falló la condición de un estamento assert.
  • AttributeError(StandardError): No se encontró el atributo.
  • EOFError(StandardError): Se intentó leer más allá del final de fichero.
  • EnvironmentError(StandardError): Clase padre de los errores relacionados con la entrada/salida.
  • IOError(EnvironmentError): Error en una operación de entrada/salida.
  • OSError(EnvironmentError): Error en una llamada a sistema.
  • WindowsError(OSError): Error en una llamada a sistema en Windows.
  • ImportError(StandardError): No se encuentra el módulo o el elemento del módulo que se quería importar.
  • LookupError(StandardError): Clase padre de los errores de acceso.
  • IndexError(LookupError): El índice de la secuencia está fuera del rango posible.
  • KeyError(LookupError): La clave no existe.
  • MemoryError(StandardError): No queda memoria suficiente.
  • NameError(StandardError): No se encontró ningún elemento con ese nombre.
  • UnboundLocalError(NameError): El nombre no está asociado a ninguna variable.
  • ReferenceError(StandardError): El objeto no tiene ninguna referencia fuerte apuntando hacia él.
  • RuntimeError(StandardError): Error en tiempo de ejecución no especificado.
  • NotImplementedError(RuntimeError): Ese método o función no está implementado.
  • SyntaxError(StandardError): Clase padre para los errores sintácticos.
  • IndentationError(SyntaxError): Error en la indentación del archivo.
  • TabError(IndentationError): Error debido a la mezcla de espacios y tabuladores.
  • SystemError(StandardError): Error interno del intérprete.
  • TypeError(StandardError): Tipo de argumento no apropiado.
  • ValueError(StandardError): Valor del argumento no apropiado.
  • UnicodeError(ValueError): Clase padre para los errores relacionados con unicode.
  • UnicodeDecodeError(UnicodeError): Error de decodificación unicode.
  • UnicodeEncodeError(UnicodeError): Error de codificación unicode.
  • UnicodeTranslateError(UnicodeError): Error de traducción unicode.
  • StopIteration(Exception): Se utiliza para indicar el final del iterador.
  • Warning(Exception): Clase padre para los avisos.
  • DeprecationWarning(Warning): Clase padre para avisos sobre características obsoletas.
  • FutureWarning(Warning): Aviso. La semántica de la construcción cambiará en un futuro.
  • ImportWarning(Warning): Aviso sobre posibles errores a la hora de importar.
  • PendingDeprecationWarning(Warning): Aviso sobre características que se marcarán como obsoletas en un futuro próximo.
  • RuntimeWarning(Warning): Aviso sobre comportmaientos dudosos en tiempo de ejecución.
  • SyntaxWarning(Warning): Aviso sobre sintaxis dudosa.
  • UnicodeWarning(Warning): Aviso sobre problemas relacionados con Unicode, sobre todo con problemas de conversión.
  • UserWarning(Warning): Clase padre para avisos creados por el programador.
  • KeyboardInterrupt(BaseException): El programa fué interrumpido por el usuario.
  • SystemExit(BaseException): Petición del intérprete para terminar la ejecución.
{backbutton}
Last Updated on Friday, 03 October 2008 13:03