Menu iconMenu icon
Programación en Python Desbloqueada para Principiantes

Capítulo 9: Manejo de Errores y Excepciones

9.4: Excepciones personalizadas

Python es un lenguaje de programación que permite la creación de excepciones personalizadas. Al hacer esto, los desarrolladores pueden adaptar sus excepciones a condiciones de error específicas. Las excepciones personalizadas pueden proporcionar mensajes de error más detallados que son más fáciles de entender y manejar para los programadores. Esto es importante porque permite una identificación y resolución más rápida de errores en el código.

Para crear una excepción personalizada en Python, deberá definir una nueva clase que herede de la clase base Exception o de una de sus subclases. Esta nueva clase debe incluir cualquier atributo o método adicional que sea necesario para describir correctamente la excepción. Al hacer esto, puede asegurarse de que la excepción personalizada proporcione toda la información necesaria para ayudar a identificar y resolver cualquier problema que pueda surgir durante el desarrollo.

Además, las excepciones personalizadas se pueden usar para diferenciar entre diferentes tipos de errores que pueden ocurrir en su código. Por ejemplo, puede crear una excepción personalizada para errores relacionados con la entrada/salida de archivos y otra excepción personalizada para errores relacionados con la conectividad de red. Esto facilita el manejo de diferentes tipos de errores de maneras específicas, lo que puede conducir a un manejo de errores más eficiente y eficaz en general.

En general, la capacidad de crear excepciones personalizadas es una característica importante de Python que puede mejorar enormemente el proceso de desarrollo. Al proporcionar mensajes de error más descriptivos y permitir un manejo de errores más específico, las excepciones personalizadas pueden ayudar a agilizar el proceso de depuración y garantizar que el código se ejecute de manera fluida y eficiente.

Aquí hay un ejemplo de cómo crear una excepción personalizada simple:

class CustomError(Exception):
    pass

En este ejemplo, definimos una nueva clase llamada ErrorPersonalizado que hereda de la clase Exception. La instrucción pass indica que la clase está vacía y no proporciona ninguna funcionalidad adicional.

Ahora, supongamos que desea agregar un mensaje de error personalizado a su excepción:

class CustomError(Exception):
    def __init__(self, message):
        self.message = message
        super().__init__(message)

En este caso, hemos anulado el método init de la clase Exception, lo que nos permite proporcionar un mensaje de error personalizado cuando se genera la excepción. La línea super().init(mensaje) llama al método init de la clase padre Exception, pasando el mensaje de error personalizado a él.

Puede generar su excepción personalizada como cualquier otra excepción:

raise CustomError("This is a custom error message.")

Al crear excepciones personalizadas, es una buena práctica usar nombres descriptivos que indiquen la naturaleza del error y proporcionar mensajes de error útiles para facilitar la depuración.

Ejemplo:

Digamos que está creando un programa que se ocupa de cuentas de usuario y desea definir una excepción personalizada para cuando un usuario intenta crear una cuenta con una dirección de correo electrónico no válida. Puede crear una excepción personalizada como esta:

class InvalidEmailError(Exception):
    def __init__(self, email):
        self.email = email
        message = f"The email address '{email}' is invalid."
        super().__init__(message)

# Usage
try:
    raise InvalidEmailError("invalid_email.com")
except InvalidEmailError as e:
    print(e)

En este ejemplo, hemos creado una excepción personalizada llamada ErrorCorreoNoValido. Al generar esta excepción, pasamos la dirección de correo electrónico no válida como argumento, que luego se usa para crear un mensaje de error personalizado.

Ejercicio 9.4.1: Crear una excepción personalizada para números negativos

Título: ErrorNúmeroNegativo

Descripción: Cree una excepción personalizada llamada ErrorNúmeroNegativo que tome un número como argumento y devuelva un mensaje de error indicando que el número es negativo.

Instrucciones:

  1. Defina una excepción personalizada llamada ErrorNúmeroNegativo.
  2. Provoque la excepción ErrorNúmeroNegativo si un número dado es negativo.
  3. Capture y maneje la excepción imprimiendo el mensaje de error.
class NegativeNumberError(Exception):
    def __init__(self, number):
        self.number = number
        message = f"The number {number} is negative."
        super().__init__(message)

def check_positive_number(number):
    if number < 0:
        raise NegativeNumberError(number)
    else:
        print(f"The number {number} is positive.")

try:
    check_positive_number(-5)
except NegativeNumberError as e:
    print(e)

Salida:

The number -5 is negative.

Ejercicio 9.4.2: Crear una excepción personalizada para cadenas de entrada vacías

Título: ErrorCadenaVacia

Descripción: Cree una excepción personalizada llamada ErrorCadenaVacia que tome una cadena como argumento y devuelva un mensaje de error indicando que la cadena de entrada está vacía.

Instrucciones:

  1. Defina una excepción personalizada llamada ErrorCadenaVacia.
  2. Provoque la excepción ErrorCadenaVacia si una cadena dada está vacía.
  3. Capture y maneje la excepción imprimiendo el mensaje de error.
class EmptyStringError(Exception):
    def __init__(self):
        message = "The input string is empty."
        super().__init__(message)

def check_non_empty_string(input_string):
    if not input_string:
        raise EmptyStringError()
    else:
        print(f"The input string is not empty.")

try:
    check_non_empty_string("")
except EmptyStringError as e:
    print(e)

Salida:

The input string is empty.

Ejercicio 9.4.3: Crear una excepción personalizada para nombres de usuario inválidos

Título: ErrorNombreUsuarioInvalido

Descripción: Cree una excepción personalizada llamada ErrorNombreUsuarioInvalido que tome un nombre de usuario como argumento y devuelva un mensaje de error indicando que el nombre de usuario es inválido.

Instrucciones:

  1. Defina una excepción personalizada llamada ErrorNombreUsuarioInvalido.
  2. Cree una función que valide un nombre de usuario dado.
  3. Provoque la excepción ErrorNombreUsuarioInvalido si el nombre de usuario es inválido.
  4. Capture y maneje la excepción imprimiendo el mensaje de error.
class InvalidUsernameError(Exception):
    def __init__(self, username):
        self.username = username
        message = f"The username '{username}' is invalid."
        super().__init__(message)

def validate_username(username):
    if len(username) < 5:
        raise InvalidUsernameError(username)
    else:
        print(f"The username '{username}' is valid.")

try:
    validate_username("usr")
except InvalidUsernameError as e:
    print(e)

Salida:

The username 'usr' is invalid.

Al finalizar el Capítulo 9, hagamos un repaso de los conceptos principales que cubrimos:

  1. Errores Comunes en Python: Analizamos diferentes tipos de errores, como errores de sintaxis, errores de tipo y errores de nombre. Comprender estos errores es esencial para depurar el código de manera efectiva.
  2. Manejo de Excepciones con try y except: Aprendimos cómo usar los bloques try y except para manejar excepciones de manera controlada. Esta técnica permite que su programa continúe ejecutándose incluso cuando encuentre un error.
  3. Provocando Excepciones: Discutimos cómo provocar excepciones usando la instrucción raise, lo cual es útil cuando necesita indicar que se ha producido un error en su código.
  4. Excepciones Personalizadas: Finalmente, vimos cómo crear clases de excepciones personalizadas para manejar situaciones específicas en su código de manera más efectiva. Las excepciones personalizadas le permiten proporcionar mensajes de error más descriptivos y manejar los errores de una manera más específica.

Al comprender e implementar estos conceptos, podrá escribir código Python más robusto y fácil de mantener. El manejo de errores es un aspecto crucial de la programación, ya que le ayuda a anticipar y lidiar con situaciones inesperadas que pueden surgir durante la ejecución de sus programas. Continúe practicando y aplicando estos conceptos en sus proyectos para dominar aún más el manejo de errores y excepciones en Python.

¡Nos vemos en el próximo capítulo: "Buenas Prácticas en Python"!

9.4: Excepciones personalizadas

Python es un lenguaje de programación que permite la creación de excepciones personalizadas. Al hacer esto, los desarrolladores pueden adaptar sus excepciones a condiciones de error específicas. Las excepciones personalizadas pueden proporcionar mensajes de error más detallados que son más fáciles de entender y manejar para los programadores. Esto es importante porque permite una identificación y resolución más rápida de errores en el código.

Para crear una excepción personalizada en Python, deberá definir una nueva clase que herede de la clase base Exception o de una de sus subclases. Esta nueva clase debe incluir cualquier atributo o método adicional que sea necesario para describir correctamente la excepción. Al hacer esto, puede asegurarse de que la excepción personalizada proporcione toda la información necesaria para ayudar a identificar y resolver cualquier problema que pueda surgir durante el desarrollo.

Además, las excepciones personalizadas se pueden usar para diferenciar entre diferentes tipos de errores que pueden ocurrir en su código. Por ejemplo, puede crear una excepción personalizada para errores relacionados con la entrada/salida de archivos y otra excepción personalizada para errores relacionados con la conectividad de red. Esto facilita el manejo de diferentes tipos de errores de maneras específicas, lo que puede conducir a un manejo de errores más eficiente y eficaz en general.

En general, la capacidad de crear excepciones personalizadas es una característica importante de Python que puede mejorar enormemente el proceso de desarrollo. Al proporcionar mensajes de error más descriptivos y permitir un manejo de errores más específico, las excepciones personalizadas pueden ayudar a agilizar el proceso de depuración y garantizar que el código se ejecute de manera fluida y eficiente.

Aquí hay un ejemplo de cómo crear una excepción personalizada simple:

class CustomError(Exception):
    pass

En este ejemplo, definimos una nueva clase llamada ErrorPersonalizado que hereda de la clase Exception. La instrucción pass indica que la clase está vacía y no proporciona ninguna funcionalidad adicional.

Ahora, supongamos que desea agregar un mensaje de error personalizado a su excepción:

class CustomError(Exception):
    def __init__(self, message):
        self.message = message
        super().__init__(message)

En este caso, hemos anulado el método init de la clase Exception, lo que nos permite proporcionar un mensaje de error personalizado cuando se genera la excepción. La línea super().init(mensaje) llama al método init de la clase padre Exception, pasando el mensaje de error personalizado a él.

Puede generar su excepción personalizada como cualquier otra excepción:

raise CustomError("This is a custom error message.")

Al crear excepciones personalizadas, es una buena práctica usar nombres descriptivos que indiquen la naturaleza del error y proporcionar mensajes de error útiles para facilitar la depuración.

Ejemplo:

Digamos que está creando un programa que se ocupa de cuentas de usuario y desea definir una excepción personalizada para cuando un usuario intenta crear una cuenta con una dirección de correo electrónico no válida. Puede crear una excepción personalizada como esta:

class InvalidEmailError(Exception):
    def __init__(self, email):
        self.email = email
        message = f"The email address '{email}' is invalid."
        super().__init__(message)

# Usage
try:
    raise InvalidEmailError("invalid_email.com")
except InvalidEmailError as e:
    print(e)

En este ejemplo, hemos creado una excepción personalizada llamada ErrorCorreoNoValido. Al generar esta excepción, pasamos la dirección de correo electrónico no válida como argumento, que luego se usa para crear un mensaje de error personalizado.

Ejercicio 9.4.1: Crear una excepción personalizada para números negativos

Título: ErrorNúmeroNegativo

Descripción: Cree una excepción personalizada llamada ErrorNúmeroNegativo que tome un número como argumento y devuelva un mensaje de error indicando que el número es negativo.

Instrucciones:

  1. Defina una excepción personalizada llamada ErrorNúmeroNegativo.
  2. Provoque la excepción ErrorNúmeroNegativo si un número dado es negativo.
  3. Capture y maneje la excepción imprimiendo el mensaje de error.
class NegativeNumberError(Exception):
    def __init__(self, number):
        self.number = number
        message = f"The number {number} is negative."
        super().__init__(message)

def check_positive_number(number):
    if number < 0:
        raise NegativeNumberError(number)
    else:
        print(f"The number {number} is positive.")

try:
    check_positive_number(-5)
except NegativeNumberError as e:
    print(e)

Salida:

The number -5 is negative.

Ejercicio 9.4.2: Crear una excepción personalizada para cadenas de entrada vacías

Título: ErrorCadenaVacia

Descripción: Cree una excepción personalizada llamada ErrorCadenaVacia que tome una cadena como argumento y devuelva un mensaje de error indicando que la cadena de entrada está vacía.

Instrucciones:

  1. Defina una excepción personalizada llamada ErrorCadenaVacia.
  2. Provoque la excepción ErrorCadenaVacia si una cadena dada está vacía.
  3. Capture y maneje la excepción imprimiendo el mensaje de error.
class EmptyStringError(Exception):
    def __init__(self):
        message = "The input string is empty."
        super().__init__(message)

def check_non_empty_string(input_string):
    if not input_string:
        raise EmptyStringError()
    else:
        print(f"The input string is not empty.")

try:
    check_non_empty_string("")
except EmptyStringError as e:
    print(e)

Salida:

The input string is empty.

Ejercicio 9.4.3: Crear una excepción personalizada para nombres de usuario inválidos

Título: ErrorNombreUsuarioInvalido

Descripción: Cree una excepción personalizada llamada ErrorNombreUsuarioInvalido que tome un nombre de usuario como argumento y devuelva un mensaje de error indicando que el nombre de usuario es inválido.

Instrucciones:

  1. Defina una excepción personalizada llamada ErrorNombreUsuarioInvalido.
  2. Cree una función que valide un nombre de usuario dado.
  3. Provoque la excepción ErrorNombreUsuarioInvalido si el nombre de usuario es inválido.
  4. Capture y maneje la excepción imprimiendo el mensaje de error.
class InvalidUsernameError(Exception):
    def __init__(self, username):
        self.username = username
        message = f"The username '{username}' is invalid."
        super().__init__(message)

def validate_username(username):
    if len(username) < 5:
        raise InvalidUsernameError(username)
    else:
        print(f"The username '{username}' is valid.")

try:
    validate_username("usr")
except InvalidUsernameError as e:
    print(e)

Salida:

The username 'usr' is invalid.

Al finalizar el Capítulo 9, hagamos un repaso de los conceptos principales que cubrimos:

  1. Errores Comunes en Python: Analizamos diferentes tipos de errores, como errores de sintaxis, errores de tipo y errores de nombre. Comprender estos errores es esencial para depurar el código de manera efectiva.
  2. Manejo de Excepciones con try y except: Aprendimos cómo usar los bloques try y except para manejar excepciones de manera controlada. Esta técnica permite que su programa continúe ejecutándose incluso cuando encuentre un error.
  3. Provocando Excepciones: Discutimos cómo provocar excepciones usando la instrucción raise, lo cual es útil cuando necesita indicar que se ha producido un error en su código.
  4. Excepciones Personalizadas: Finalmente, vimos cómo crear clases de excepciones personalizadas para manejar situaciones específicas en su código de manera más efectiva. Las excepciones personalizadas le permiten proporcionar mensajes de error más descriptivos y manejar los errores de una manera más específica.

Al comprender e implementar estos conceptos, podrá escribir código Python más robusto y fácil de mantener. El manejo de errores es un aspecto crucial de la programación, ya que le ayuda a anticipar y lidiar con situaciones inesperadas que pueden surgir durante la ejecución de sus programas. Continúe practicando y aplicando estos conceptos en sus proyectos para dominar aún más el manejo de errores y excepciones en Python.

¡Nos vemos en el próximo capítulo: "Buenas Prácticas en Python"!

9.4: Excepciones personalizadas

Python es un lenguaje de programación que permite la creación de excepciones personalizadas. Al hacer esto, los desarrolladores pueden adaptar sus excepciones a condiciones de error específicas. Las excepciones personalizadas pueden proporcionar mensajes de error más detallados que son más fáciles de entender y manejar para los programadores. Esto es importante porque permite una identificación y resolución más rápida de errores en el código.

Para crear una excepción personalizada en Python, deberá definir una nueva clase que herede de la clase base Exception o de una de sus subclases. Esta nueva clase debe incluir cualquier atributo o método adicional que sea necesario para describir correctamente la excepción. Al hacer esto, puede asegurarse de que la excepción personalizada proporcione toda la información necesaria para ayudar a identificar y resolver cualquier problema que pueda surgir durante el desarrollo.

Además, las excepciones personalizadas se pueden usar para diferenciar entre diferentes tipos de errores que pueden ocurrir en su código. Por ejemplo, puede crear una excepción personalizada para errores relacionados con la entrada/salida de archivos y otra excepción personalizada para errores relacionados con la conectividad de red. Esto facilita el manejo de diferentes tipos de errores de maneras específicas, lo que puede conducir a un manejo de errores más eficiente y eficaz en general.

En general, la capacidad de crear excepciones personalizadas es una característica importante de Python que puede mejorar enormemente el proceso de desarrollo. Al proporcionar mensajes de error más descriptivos y permitir un manejo de errores más específico, las excepciones personalizadas pueden ayudar a agilizar el proceso de depuración y garantizar que el código se ejecute de manera fluida y eficiente.

Aquí hay un ejemplo de cómo crear una excepción personalizada simple:

class CustomError(Exception):
    pass

En este ejemplo, definimos una nueva clase llamada ErrorPersonalizado que hereda de la clase Exception. La instrucción pass indica que la clase está vacía y no proporciona ninguna funcionalidad adicional.

Ahora, supongamos que desea agregar un mensaje de error personalizado a su excepción:

class CustomError(Exception):
    def __init__(self, message):
        self.message = message
        super().__init__(message)

En este caso, hemos anulado el método init de la clase Exception, lo que nos permite proporcionar un mensaje de error personalizado cuando se genera la excepción. La línea super().init(mensaje) llama al método init de la clase padre Exception, pasando el mensaje de error personalizado a él.

Puede generar su excepción personalizada como cualquier otra excepción:

raise CustomError("This is a custom error message.")

Al crear excepciones personalizadas, es una buena práctica usar nombres descriptivos que indiquen la naturaleza del error y proporcionar mensajes de error útiles para facilitar la depuración.

Ejemplo:

Digamos que está creando un programa que se ocupa de cuentas de usuario y desea definir una excepción personalizada para cuando un usuario intenta crear una cuenta con una dirección de correo electrónico no válida. Puede crear una excepción personalizada como esta:

class InvalidEmailError(Exception):
    def __init__(self, email):
        self.email = email
        message = f"The email address '{email}' is invalid."
        super().__init__(message)

# Usage
try:
    raise InvalidEmailError("invalid_email.com")
except InvalidEmailError as e:
    print(e)

En este ejemplo, hemos creado una excepción personalizada llamada ErrorCorreoNoValido. Al generar esta excepción, pasamos la dirección de correo electrónico no válida como argumento, que luego se usa para crear un mensaje de error personalizado.

Ejercicio 9.4.1: Crear una excepción personalizada para números negativos

Título: ErrorNúmeroNegativo

Descripción: Cree una excepción personalizada llamada ErrorNúmeroNegativo que tome un número como argumento y devuelva un mensaje de error indicando que el número es negativo.

Instrucciones:

  1. Defina una excepción personalizada llamada ErrorNúmeroNegativo.
  2. Provoque la excepción ErrorNúmeroNegativo si un número dado es negativo.
  3. Capture y maneje la excepción imprimiendo el mensaje de error.
class NegativeNumberError(Exception):
    def __init__(self, number):
        self.number = number
        message = f"The number {number} is negative."
        super().__init__(message)

def check_positive_number(number):
    if number < 0:
        raise NegativeNumberError(number)
    else:
        print(f"The number {number} is positive.")

try:
    check_positive_number(-5)
except NegativeNumberError as e:
    print(e)

Salida:

The number -5 is negative.

Ejercicio 9.4.2: Crear una excepción personalizada para cadenas de entrada vacías

Título: ErrorCadenaVacia

Descripción: Cree una excepción personalizada llamada ErrorCadenaVacia que tome una cadena como argumento y devuelva un mensaje de error indicando que la cadena de entrada está vacía.

Instrucciones:

  1. Defina una excepción personalizada llamada ErrorCadenaVacia.
  2. Provoque la excepción ErrorCadenaVacia si una cadena dada está vacía.
  3. Capture y maneje la excepción imprimiendo el mensaje de error.
class EmptyStringError(Exception):
    def __init__(self):
        message = "The input string is empty."
        super().__init__(message)

def check_non_empty_string(input_string):
    if not input_string:
        raise EmptyStringError()
    else:
        print(f"The input string is not empty.")

try:
    check_non_empty_string("")
except EmptyStringError as e:
    print(e)

Salida:

The input string is empty.

Ejercicio 9.4.3: Crear una excepción personalizada para nombres de usuario inválidos

Título: ErrorNombreUsuarioInvalido

Descripción: Cree una excepción personalizada llamada ErrorNombreUsuarioInvalido que tome un nombre de usuario como argumento y devuelva un mensaje de error indicando que el nombre de usuario es inválido.

Instrucciones:

  1. Defina una excepción personalizada llamada ErrorNombreUsuarioInvalido.
  2. Cree una función que valide un nombre de usuario dado.
  3. Provoque la excepción ErrorNombreUsuarioInvalido si el nombre de usuario es inválido.
  4. Capture y maneje la excepción imprimiendo el mensaje de error.
class InvalidUsernameError(Exception):
    def __init__(self, username):
        self.username = username
        message = f"The username '{username}' is invalid."
        super().__init__(message)

def validate_username(username):
    if len(username) < 5:
        raise InvalidUsernameError(username)
    else:
        print(f"The username '{username}' is valid.")

try:
    validate_username("usr")
except InvalidUsernameError as e:
    print(e)

Salida:

The username 'usr' is invalid.

Al finalizar el Capítulo 9, hagamos un repaso de los conceptos principales que cubrimos:

  1. Errores Comunes en Python: Analizamos diferentes tipos de errores, como errores de sintaxis, errores de tipo y errores de nombre. Comprender estos errores es esencial para depurar el código de manera efectiva.
  2. Manejo de Excepciones con try y except: Aprendimos cómo usar los bloques try y except para manejar excepciones de manera controlada. Esta técnica permite que su programa continúe ejecutándose incluso cuando encuentre un error.
  3. Provocando Excepciones: Discutimos cómo provocar excepciones usando la instrucción raise, lo cual es útil cuando necesita indicar que se ha producido un error en su código.
  4. Excepciones Personalizadas: Finalmente, vimos cómo crear clases de excepciones personalizadas para manejar situaciones específicas en su código de manera más efectiva. Las excepciones personalizadas le permiten proporcionar mensajes de error más descriptivos y manejar los errores de una manera más específica.

Al comprender e implementar estos conceptos, podrá escribir código Python más robusto y fácil de mantener. El manejo de errores es un aspecto crucial de la programación, ya que le ayuda a anticipar y lidiar con situaciones inesperadas que pueden surgir durante la ejecución de sus programas. Continúe practicando y aplicando estos conceptos en sus proyectos para dominar aún más el manejo de errores y excepciones en Python.

¡Nos vemos en el próximo capítulo: "Buenas Prácticas en Python"!

9.4: Excepciones personalizadas

Python es un lenguaje de programación que permite la creación de excepciones personalizadas. Al hacer esto, los desarrolladores pueden adaptar sus excepciones a condiciones de error específicas. Las excepciones personalizadas pueden proporcionar mensajes de error más detallados que son más fáciles de entender y manejar para los programadores. Esto es importante porque permite una identificación y resolución más rápida de errores en el código.

Para crear una excepción personalizada en Python, deberá definir una nueva clase que herede de la clase base Exception o de una de sus subclases. Esta nueva clase debe incluir cualquier atributo o método adicional que sea necesario para describir correctamente la excepción. Al hacer esto, puede asegurarse de que la excepción personalizada proporcione toda la información necesaria para ayudar a identificar y resolver cualquier problema que pueda surgir durante el desarrollo.

Además, las excepciones personalizadas se pueden usar para diferenciar entre diferentes tipos de errores que pueden ocurrir en su código. Por ejemplo, puede crear una excepción personalizada para errores relacionados con la entrada/salida de archivos y otra excepción personalizada para errores relacionados con la conectividad de red. Esto facilita el manejo de diferentes tipos de errores de maneras específicas, lo que puede conducir a un manejo de errores más eficiente y eficaz en general.

En general, la capacidad de crear excepciones personalizadas es una característica importante de Python que puede mejorar enormemente el proceso de desarrollo. Al proporcionar mensajes de error más descriptivos y permitir un manejo de errores más específico, las excepciones personalizadas pueden ayudar a agilizar el proceso de depuración y garantizar que el código se ejecute de manera fluida y eficiente.

Aquí hay un ejemplo de cómo crear una excepción personalizada simple:

class CustomError(Exception):
    pass

En este ejemplo, definimos una nueva clase llamada ErrorPersonalizado que hereda de la clase Exception. La instrucción pass indica que la clase está vacía y no proporciona ninguna funcionalidad adicional.

Ahora, supongamos que desea agregar un mensaje de error personalizado a su excepción:

class CustomError(Exception):
    def __init__(self, message):
        self.message = message
        super().__init__(message)

En este caso, hemos anulado el método init de la clase Exception, lo que nos permite proporcionar un mensaje de error personalizado cuando se genera la excepción. La línea super().init(mensaje) llama al método init de la clase padre Exception, pasando el mensaje de error personalizado a él.

Puede generar su excepción personalizada como cualquier otra excepción:

raise CustomError("This is a custom error message.")

Al crear excepciones personalizadas, es una buena práctica usar nombres descriptivos que indiquen la naturaleza del error y proporcionar mensajes de error útiles para facilitar la depuración.

Ejemplo:

Digamos que está creando un programa que se ocupa de cuentas de usuario y desea definir una excepción personalizada para cuando un usuario intenta crear una cuenta con una dirección de correo electrónico no válida. Puede crear una excepción personalizada como esta:

class InvalidEmailError(Exception):
    def __init__(self, email):
        self.email = email
        message = f"The email address '{email}' is invalid."
        super().__init__(message)

# Usage
try:
    raise InvalidEmailError("invalid_email.com")
except InvalidEmailError as e:
    print(e)

En este ejemplo, hemos creado una excepción personalizada llamada ErrorCorreoNoValido. Al generar esta excepción, pasamos la dirección de correo electrónico no válida como argumento, que luego se usa para crear un mensaje de error personalizado.

Ejercicio 9.4.1: Crear una excepción personalizada para números negativos

Título: ErrorNúmeroNegativo

Descripción: Cree una excepción personalizada llamada ErrorNúmeroNegativo que tome un número como argumento y devuelva un mensaje de error indicando que el número es negativo.

Instrucciones:

  1. Defina una excepción personalizada llamada ErrorNúmeroNegativo.
  2. Provoque la excepción ErrorNúmeroNegativo si un número dado es negativo.
  3. Capture y maneje la excepción imprimiendo el mensaje de error.
class NegativeNumberError(Exception):
    def __init__(self, number):
        self.number = number
        message = f"The number {number} is negative."
        super().__init__(message)

def check_positive_number(number):
    if number < 0:
        raise NegativeNumberError(number)
    else:
        print(f"The number {number} is positive.")

try:
    check_positive_number(-5)
except NegativeNumberError as e:
    print(e)

Salida:

The number -5 is negative.

Ejercicio 9.4.2: Crear una excepción personalizada para cadenas de entrada vacías

Título: ErrorCadenaVacia

Descripción: Cree una excepción personalizada llamada ErrorCadenaVacia que tome una cadena como argumento y devuelva un mensaje de error indicando que la cadena de entrada está vacía.

Instrucciones:

  1. Defina una excepción personalizada llamada ErrorCadenaVacia.
  2. Provoque la excepción ErrorCadenaVacia si una cadena dada está vacía.
  3. Capture y maneje la excepción imprimiendo el mensaje de error.
class EmptyStringError(Exception):
    def __init__(self):
        message = "The input string is empty."
        super().__init__(message)

def check_non_empty_string(input_string):
    if not input_string:
        raise EmptyStringError()
    else:
        print(f"The input string is not empty.")

try:
    check_non_empty_string("")
except EmptyStringError as e:
    print(e)

Salida:

The input string is empty.

Ejercicio 9.4.3: Crear una excepción personalizada para nombres de usuario inválidos

Título: ErrorNombreUsuarioInvalido

Descripción: Cree una excepción personalizada llamada ErrorNombreUsuarioInvalido que tome un nombre de usuario como argumento y devuelva un mensaje de error indicando que el nombre de usuario es inválido.

Instrucciones:

  1. Defina una excepción personalizada llamada ErrorNombreUsuarioInvalido.
  2. Cree una función que valide un nombre de usuario dado.
  3. Provoque la excepción ErrorNombreUsuarioInvalido si el nombre de usuario es inválido.
  4. Capture y maneje la excepción imprimiendo el mensaje de error.
class InvalidUsernameError(Exception):
    def __init__(self, username):
        self.username = username
        message = f"The username '{username}' is invalid."
        super().__init__(message)

def validate_username(username):
    if len(username) < 5:
        raise InvalidUsernameError(username)
    else:
        print(f"The username '{username}' is valid.")

try:
    validate_username("usr")
except InvalidUsernameError as e:
    print(e)

Salida:

The username 'usr' is invalid.

Al finalizar el Capítulo 9, hagamos un repaso de los conceptos principales que cubrimos:

  1. Errores Comunes en Python: Analizamos diferentes tipos de errores, como errores de sintaxis, errores de tipo y errores de nombre. Comprender estos errores es esencial para depurar el código de manera efectiva.
  2. Manejo de Excepciones con try y except: Aprendimos cómo usar los bloques try y except para manejar excepciones de manera controlada. Esta técnica permite que su programa continúe ejecutándose incluso cuando encuentre un error.
  3. Provocando Excepciones: Discutimos cómo provocar excepciones usando la instrucción raise, lo cual es útil cuando necesita indicar que se ha producido un error en su código.
  4. Excepciones Personalizadas: Finalmente, vimos cómo crear clases de excepciones personalizadas para manejar situaciones específicas en su código de manera más efectiva. Las excepciones personalizadas le permiten proporcionar mensajes de error más descriptivos y manejar los errores de una manera más específica.

Al comprender e implementar estos conceptos, podrá escribir código Python más robusto y fácil de mantener. El manejo de errores es un aspecto crucial de la programación, ya que le ayuda a anticipar y lidiar con situaciones inesperadas que pueden surgir durante la ejecución de sus programas. Continúe practicando y aplicando estos conceptos en sus proyectos para dominar aún más el manejo de errores y excepciones en Python.

¡Nos vemos en el próximo capítulo: "Buenas Prácticas en Python"!