CodeGym /Cursos /Python SELF ES /Manejo de múltiples excepciones

Manejo de múltiples excepciones

Python SELF ES
Nivel 17 , Lección 3
Disponible

4.1 Captura de múltiples excepciones

Python permite manejar múltiples excepciones utilizando varios bloques except o un solo bloque except con una tupla de excepciones. Vamos a ver ambos enfoques.

Varios bloques except

Puedes usar varios bloques except para manejar diferentes tipos de excepciones de distintas maneras.


try:
    # Código que puede lanzar una excepción
    result = int("abc")
except ValueError:
    print("Error: valor incorrecto.")
except ZeroDivisionError:
    print("Error: división por cero.")

Un solo bloque except con una tupla de excepciones

Puedes manejar varias excepciones en un solo bloque except, pasándolas como una tupla.


try:
    # Código que puede lanzar una excepción
    result = int("abc")
except (ValueError, ZeroDivisionError) as e:
    print(f"Ocurrió un error: {e}")

Uso de except NameError as var

Al manejar excepciones puedes usar la sintaxis except <ExceptionType> as <variable> para obtener el objeto de la excepción. Esto te permite acceder a la información de la excepción, como el mensaje de error y otros atributos.


try:
    # Código que puede lanzar NameError
    print(undeclared_variable)
except NameError as e:
    print(f"Ocurrió un error: {e}")
    print(f"Tipo de error: {type(e)}")

4.2 Alcance de la variable de error

La variable que almacena la excepción (e en el ejemplo anterior), está disponible solo dentro de su bloque except. Fuera de este bloque, la variable no está disponible.


try:
    # Código que puede lanzar NameError
    print(undeclared_variable)
except NameError as e:
    print(f"Ocurrió un error: {e}")
    print(f"Tipo de error: {type(e)}")
# Aquí e ya no está disponible y la siguiente línea lanzará NameError
# print(e)  # NameError: name 'e' is not defined

Si quieres hacer algo importante con la excepción fuera de su bloque, entonces necesitas guardarla en una variable separada. Ejemplo:


exception = None
try:
    # Código que puede lanzar una excepción
    result = int("abc")
except ValueError as e:
    exception = e
    print("Error: valor incorrecto.")
except ZeroDivisionError as e:
    exception = e
    print("Error: división por cero.")

print(exception)

Nota que la variable exception guarda la última excepción ocurrida, lo que puede ser útil para su posterior manejo fuera del bloque try.

4.3 Qué información útil se puede encontrar en un error

El objeto de excepción contiene información sobre el error. Dependiendo del tipo de excepción, el objeto puede contener diversos atributos.

Estos son algunos atributos comunes accesibles para la mayoría de las excepciones:

  • args: Tupla que contiene los argumentos pasados al crear la excepción. Normalmente es el mensaje de error.
  • message: Cadena que contiene el mensaje de error (en algunas excepciones).
  • __str__: Método que devuelve la representación en cadena de la excepción. Este método se usa para obtener la representación textual del error, que será devuelta al usar la función print() en el objeto de la excepción.

Ejemplo:


try:
    # Código que puede lanzar ValueError
    result = int("abc")
except ValueError as e:
    print(f"Ocurrió un error: {e}")
    print(f"Argumentos del error: {e.args}")
    print(f"Mensaje de error: {str(e)}")

Ejemplo de manejo de múltiples excepciones


try:
    # Código que puede lanzar varios tipos de excepciones
    result = 10 / 0
except (ValueError, ZeroDivisionError) as e:
    print(f"Ocurrió un error: {e}")
    print(f"Tipo de error: {type(e)}")
    print(f"Argumentos del error: {e.args}")

Si ocurre un ValueError o un ZeroDivisionError, será capturado por el bloque except. La información de la excepción estará disponible a través de la variable e. La salida incluirá el tipo de error y los argumentos pasados al crear la excepción.

Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION