Excepciones de Python

Es importante tener una forma de manejar los errores.

Python nos da el manejo de excepciones.

Si envuelve líneas de código en untry:cuadra:

try:
    # some lines of code

Si ocurre un error, Python le alertará y podrá determinar qué tipo de error ocurrió usando unexceptbloques:

try:
    # some lines of code
except <ERROR1>:
    # handler <ERROR1>
except <ERROR2>:
    # handler <ERROR2>

Para detectar todas las excepciones, puede usarexceptsin ningún tipo de error:

try:
    # some lines of code
except <ERROR1>:
    # handler <ERROR1>
except:
    # catch all other exceptions

loselseEl bloque se ejecuta si no se encontraron excepciones:

try:
    # some lines of code
except <ERROR1>:
    # handler <ERROR1>
except <ERROR2>:
    # handler <ERROR2>
else:
    # no exceptions were raised, the code ran successfully

AfinallyEl bloque le permite realizar alguna operación en cualquier caso, independientemente de si se produjo un error o no

try:
    # some lines of code
except <ERROR1>:
    # handler <ERROR1>
except <ERROR2>:
    # handler <ERROR2>
else:
    # no exceptions were raised, the code ran successfully
finally:
    # do something in any case

El error específico que va a ocurrir depende de la operación que esté realizando.

Por ejemplo, si está leyendo un archivo, es posible que obtenga unEOFError. Si divide un número por cero obtendrá unZeroDivisionError. Si tiene un problema de conversión de tipo, es posible que obtenga unTypeError.

Prueba este código:

result = 2 / 0
print(result)

El programa terminará con un error

Traceback (most recent call last):
  File "main.py", line 1, in <module>
    result = 2 / 0
ZeroDivisionError: division by zero

and the lines of code after the error will not be executed.

Adding that operation in a try: block lets us recover gracefully and move on with the program:

try:
    result = 2 / 0
except ZeroDivisionError:
    print('Cannot divide by zero!')
finally:
    result = 1

print(result) # 1

You can raise exceptions in your own code, too, using the raise statement:

raise Exception('An error occurred!')

This raises a general exception, and you can intercept it using:

try:
    raise Exception('An error occurred!')
except Exception as error:
    print(error)

You can also define your own exception class, extending from Exception:

class DogNotFoundException(Exception):
    pass

pass here means “nothing” and we must use it when we define a class without methods, or a function without code, too.

try:
    raise DogNotFoundException()
except DogNotFoundException:
    print('Dog not found!')

More python tutorials: