English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriales básicos de Python

Control de flujo de Python

Funciones en Python

Tipos de datos en Python

Operaciones de archivos de Python

Objetos y clases de Python

Fecha y hora de Python

Conocimientos avanzados de Python

Manual de referencia de Python

Excepciones personalizadas en Python

Python tiene muchasExcepciones integradas, que obliga a tu programa a generar errores cuando ocurren algunos errores.

Pero a veces es posible que necesites crear una gestión de excepciones personalizada que se ajuste a tus propósitos.

En Python, el usuario puede definir este tipo de excepción creando una nueva clase. La clase de excepción debe derivar directamente o indirectamente de la clase Exception. La mayoría de las excepciones integradas también se derivan de esta clase.

>>> class CustomError(Exception):
... pass
...
>>> raise CustomError
Traceback (última llamada reciente):
...
__main__.CustomError
>>> raise CustomError("Se produjo un error")
Traceback (última llamada reciente):
...
__main__.CustomError: Se produjo un error

Aquí, creamos una excepción definida por el usuario llamada CustomError, que se deriva de la clase Exception. Al igual que con otras excepciones, se puede lanzar esta nueva excepción con una declaración raise, que puede tener un mensaje de error opcional.

Cuando desarrollamos programas Python grandes, es mejor colocar todas las excepciones definidas por el usuario en un archivo separado. Muchos módulos estándar pueden hacer esto. Ellos definen las excepciones en exceptions.py o errors.py.

Las clases de excepciones definidas por el usuario pueden realizar todas las operaciones que pueden realizar las clases comunes, pero generalmente las mantenemos simples y claras. La mayoría de las implementaciones declaran una clase base personalizada y derivan otras clases de excepción de esta clase. A continuación, se ilustrará este concepto con un ejemplo.

Ejemplo: Excepciones definidas por el usuario en Python

En este ejemplo, explicaremos cómo usar excepciones definidas por el usuario en un programa.

Este programa solicitará que el usuario ingrese un número hasta que lo adivine correctamente. Para ayudarles a aclarar, les indicará si su suposición es mayor o menor que el número almacenado.

# Definir excepciones definidas por el usuario de Python
class Error(Exception):
   """Clase base para otras excepciones"""
   pass
class ValueTooSmallError(Error):
   """Se lanza cuando el valor de entrada es demasiado pequeño"""
   pass
class ValueTooLargeError(Error):
   """Se lanza cuando el valor de entrada es demasiado grande"""
   pass
# Nuestro programa principal
# El usuario adivina un número, hasta que/hasta que ella lo adivine
# Necesitas adivinar este número
number = 10
while True:
   try:
       i_num = int(input("Ingrese un número: "))
       if i_num < number:
           raise ValueTooSmallError
       elif i_num > number:
           raise ValueTooLargeError
       break
   except ValueTooSmallError:
       print("Este valor es demasiado pequeño, inténtalo de nuevo!")
       print()
   except ValueTooLargeError:
       print("Este valor es demasiado grande, inténtalo de nuevo!")
       print()
print("¡Felicidades! ¡Has acertado!")

Este es un ejemplo de ejecución del programa.

Ingrese un número: 12
Este valor es demasiado grande, inténtalo de nuevo!
Ingrese un número: 0
Este valor es demasiado pequeño, inténtalo de nuevo!
Ingrese un número: 9
Este valor es demasiado pequeño, inténtalo de nuevo!
Ingrese un número: 10
¡Felicidades! ¡Has acertado!

Aquí, definimos una clase base llamada Error.

Nuestras dos excepciones adicionales que realmente generan nuestros programas (ValueTooSmallError y ValueTooLargeError) se derivan de esta clase. Esta es la forma estándar de definir excepciones definidas por el usuario en la programación Python, pero no se limita a este método.

Visite esta página para obtener información detallada¿Cómo manejar las excepciones en Python?.