Menu iconMenu icon
Python y SQL Biblia

Capítulo 3: Controlando el Flujo

3.2 Manejo de Errores y Excepciones

Al trabajar con Python, es importante entender los diferentes tipos de errores que pueden ocurrir. Los dos tipos principales son errores de sintaxis y excepciones. Los errores de sintaxis son el tipo más común y ocurren cuando el analizador de Python no puede entender una línea de código. Esto puede ser causado por un paréntesis faltante o una palabra clave mal escrita, por ejemplo.

Las excepciones, por otro lado, son un poco más complejas. Ocurren cuando surgen situaciones inesperadas mientras un programa se está ejecutando, incluso si el código es sintácticamente correcto. Hay muchos tipos diferentes de excepciones que pueden ocurrir, como la división por cero, errores de nombre y errores de tipo. Es importante que los programadores estén conscientes de estas excepciones y sepan cómo manejarlas correctamente.

Además de entender los tipos de errores que pueden ocurrir, también es importante saber cómo depurar tu código. Una técnica común es usar declaraciones de impresión para verificar los valores de las variables en diferentes puntos del programa. Otra técnica es usar un depurador, que te permite avanzar paso a paso por el código y ver exactamente qué está sucediendo en cada línea.

Al entender los diferentes tipos de errores que pueden ocurrir y cómo depurar tu código, puedes convertirte en un programador de Python más efectivo y eficiente.

Por ejemplo, aquí tienes un error de sintaxis:

# This line has a syntax error because it's missing a closing parenthesis
print("Hello, world!"

Ejecutar este código te da la siguiente salida:

  File "<stdin>", line 1
    print("Hello, world!"
                         ^
SyntaxError: unexpected EOF while parsing

Y aquí tienes una excepción:

# This line will raise an exception because you can't divide by zero
print(5 / 0)

Ejecutar este código te da la siguiente salida:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero

Incluso si tu código es sintácticamente correcto, aún puede generar excepciones cuando se encuentran condiciones inesperadas. Ahí es donde entra el manejo de errores y excepciones.

3.2.1 Manejo de Excepciones con try y except

Python proporciona las palabras clave try y except para capturar y manejar excepciones. Cuando ocurre un error, Python detiene la ejecución del código y, dependiendo del tipo de error, puede mostrar un mensaje de error. Al usar las palabras clave try y except, puedes indicarle a Python que maneje el error de manera elegante y continúe ejecutando el código.

La palabra clave try es seguida por un bloque de código que puede generar una excepción, y la palabra clave except es seguida por un bloque de código que especifica cómo manejar la excepción. Además, puedes usar la palabra clave else para especificar un bloque de código que se ejecuta si no se produce ninguna excepción, y la palabra clave finally para especificar un bloque de código que siempre se ejecuta independientemente de si se produce o no una excepción.

Aquí tienes un ejemplo básico:

try:
    # This line will raise an exception
    print(5 / 0)
except ZeroDivisionError:
    # This line will run if a ZeroDivisionError is raised
    print("You can't divide by zero!")

Ejecutar este código te da la siguiente salida:

You can't divide by zero!

En este ejemplo, el bloque try contiene código que podría generar una excepción. El bloque except contiene código que se ejecutará si se genera una excepción específica (en este caso, ZeroDivisionError) en el bloque try.

Si no sabes qué tipo de excepción puede generar una línea de código, puedes usar una declaración except sin especificar para capturar todas las excepciones:

try:
    # This line will raise an exception
    print(5 / 0)
except:
    # This line will run if any exception is raised
    print("An error occurred!")

3.2.2 Las cláusulas else y finally

También puedes incluir las cláusulas else y finally en una declaración try/except. La cláusula else se ejecuta si no se genera ninguna excepción, y la cláusula finally se ejecuta pase lo que pase:

try:
    # This line won't raise an exception
    print("Hello, world!")
except:
    print("An error occurred!")
else:
    print("No errors occurred!")
finally:
    print("This line runs no matter what.")

Al ejecutar este código, obtendrás la siguiente salida:

Hello, world!
No errors occurred!
This line runs no matter what.

En este ejemplo, como no se generó ninguna excepción en el bloque try, se ejecuta el bloque else. El bloque finally se ejecuta pase lo que pase, incluso si se generó y capturó una excepción.

3.2.3 Generación de Excepciones

Por último, puedes generar tus propias excepciones con la instrucción raise:

# This line will raise a ValueError
raise ValueError("This is a custom error message.")
# This line will raise a ValueError
raise ValueError("This is a custom error message.")

Te da la siguiente salida:

Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
ValueError: This is a custom error message.

Aquí, estamos generando una excepción ValueError con un mensaje de error personalizado. Esto puede ser útil cuando quieres proporcionar más información sobre qué salió mal, o cuando quieres detener el programa cuando se cumple cierta condición.

También puedes crear tus propias excepciones personalizadas definiendo nuevas clases de excepción. Esto puede ser útil si deseas crear un tipo específico de excepción que no esté cubierto por las excepciones integradas de Python:

class CustomError(Exception):
    pass

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

Esto generará una excepción ErrorPersonalizado con el mensaje "Este es un mensaje de error personalizado".

En resumen, comprender y manejar adecuadamente errores y excepciones en Python es crucial para escribir código robusto y confiable. Mediante el uso de la declaración try/except, puedes capturar y manejar excepciones; las cláusulas else y finally te permiten especificar código que se debe ejecutar dependiendo de si se generó una excepción, y la declaración raise te permite generar tus propias excepciones. Al combinar eficazmente estas herramientas, puedes manejar cualquier situación inesperada que pueda surgir cuando se está ejecutando tu código.

3.2.4 La declaración assert

La declaración assert te permite probar si se cumple cierta condición, y si no, el programa generará un AssertionError. Por lo general, se utiliza con fines de depuración, ayudando a asegurar que el estado del programa sea el esperado. Sigue la sintaxis assert condición [, mensaje_de_error].

x = 5
assert x < 10, "x should be less than 10"

En este ejemplo, dado que la condición x < 10 es verdadera, no sucede nada. Sin embargo, si x fuera mayor o igual a 10, el programa generaría un AssertionError con el mensaje "x debería ser menor que 10".

x = 15
assert x < 10, "x should be less than 10"

Esto producirá:

AssertionError: x should be less than 10

La declaración assert es una herramienta útil cuando deseas insertar rápidamente afirmaciones de depuración en un programa. Te permite confirmar la corrección de un programa o localizar errores más fácilmente al reducir las secciones de código donde podrían estar los errores. Sin embargo, es importante tener en cuenta que las afirmaciones pueden deshabilitarse globalmente con los conmutadores de línea de comandos -O y -OO, así como con la variable de entorno PYTHONOPTIMIZE en Python.

Recuerda, el manejo de excepciones y las afirmaciones son herramientas vitales en tu conjunto de herramientas de programación de Python. Mientras que el manejo de excepciones te permite lidiar con eventos inesperados durante la ejecución del programa, las afirmaciones te permiten verificar la corrección de tu código durante el desarrollo. Comprender y usar estas herramientas de manera efectiva mejorará significativamente la confiabilidad y robustez de tus programas.

3.2 Manejo de Errores y Excepciones

Al trabajar con Python, es importante entender los diferentes tipos de errores que pueden ocurrir. Los dos tipos principales son errores de sintaxis y excepciones. Los errores de sintaxis son el tipo más común y ocurren cuando el analizador de Python no puede entender una línea de código. Esto puede ser causado por un paréntesis faltante o una palabra clave mal escrita, por ejemplo.

Las excepciones, por otro lado, son un poco más complejas. Ocurren cuando surgen situaciones inesperadas mientras un programa se está ejecutando, incluso si el código es sintácticamente correcto. Hay muchos tipos diferentes de excepciones que pueden ocurrir, como la división por cero, errores de nombre y errores de tipo. Es importante que los programadores estén conscientes de estas excepciones y sepan cómo manejarlas correctamente.

Además de entender los tipos de errores que pueden ocurrir, también es importante saber cómo depurar tu código. Una técnica común es usar declaraciones de impresión para verificar los valores de las variables en diferentes puntos del programa. Otra técnica es usar un depurador, que te permite avanzar paso a paso por el código y ver exactamente qué está sucediendo en cada línea.

Al entender los diferentes tipos de errores que pueden ocurrir y cómo depurar tu código, puedes convertirte en un programador de Python más efectivo y eficiente.

Por ejemplo, aquí tienes un error de sintaxis:

# This line has a syntax error because it's missing a closing parenthesis
print("Hello, world!"

Ejecutar este código te da la siguiente salida:

  File "<stdin>", line 1
    print("Hello, world!"
                         ^
SyntaxError: unexpected EOF while parsing

Y aquí tienes una excepción:

# This line will raise an exception because you can't divide by zero
print(5 / 0)

Ejecutar este código te da la siguiente salida:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero

Incluso si tu código es sintácticamente correcto, aún puede generar excepciones cuando se encuentran condiciones inesperadas. Ahí es donde entra el manejo de errores y excepciones.

3.2.1 Manejo de Excepciones con try y except

Python proporciona las palabras clave try y except para capturar y manejar excepciones. Cuando ocurre un error, Python detiene la ejecución del código y, dependiendo del tipo de error, puede mostrar un mensaje de error. Al usar las palabras clave try y except, puedes indicarle a Python que maneje el error de manera elegante y continúe ejecutando el código.

La palabra clave try es seguida por un bloque de código que puede generar una excepción, y la palabra clave except es seguida por un bloque de código que especifica cómo manejar la excepción. Además, puedes usar la palabra clave else para especificar un bloque de código que se ejecuta si no se produce ninguna excepción, y la palabra clave finally para especificar un bloque de código que siempre se ejecuta independientemente de si se produce o no una excepción.

Aquí tienes un ejemplo básico:

try:
    # This line will raise an exception
    print(5 / 0)
except ZeroDivisionError:
    # This line will run if a ZeroDivisionError is raised
    print("You can't divide by zero!")

Ejecutar este código te da la siguiente salida:

You can't divide by zero!

En este ejemplo, el bloque try contiene código que podría generar una excepción. El bloque except contiene código que se ejecutará si se genera una excepción específica (en este caso, ZeroDivisionError) en el bloque try.

Si no sabes qué tipo de excepción puede generar una línea de código, puedes usar una declaración except sin especificar para capturar todas las excepciones:

try:
    # This line will raise an exception
    print(5 / 0)
except:
    # This line will run if any exception is raised
    print("An error occurred!")

3.2.2 Las cláusulas else y finally

También puedes incluir las cláusulas else y finally en una declaración try/except. La cláusula else se ejecuta si no se genera ninguna excepción, y la cláusula finally se ejecuta pase lo que pase:

try:
    # This line won't raise an exception
    print("Hello, world!")
except:
    print("An error occurred!")
else:
    print("No errors occurred!")
finally:
    print("This line runs no matter what.")

Al ejecutar este código, obtendrás la siguiente salida:

Hello, world!
No errors occurred!
This line runs no matter what.

En este ejemplo, como no se generó ninguna excepción en el bloque try, se ejecuta el bloque else. El bloque finally se ejecuta pase lo que pase, incluso si se generó y capturó una excepción.

3.2.3 Generación de Excepciones

Por último, puedes generar tus propias excepciones con la instrucción raise:

# This line will raise a ValueError
raise ValueError("This is a custom error message.")
# This line will raise a ValueError
raise ValueError("This is a custom error message.")

Te da la siguiente salida:

Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
ValueError: This is a custom error message.

Aquí, estamos generando una excepción ValueError con un mensaje de error personalizado. Esto puede ser útil cuando quieres proporcionar más información sobre qué salió mal, o cuando quieres detener el programa cuando se cumple cierta condición.

También puedes crear tus propias excepciones personalizadas definiendo nuevas clases de excepción. Esto puede ser útil si deseas crear un tipo específico de excepción que no esté cubierto por las excepciones integradas de Python:

class CustomError(Exception):
    pass

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

Esto generará una excepción ErrorPersonalizado con el mensaje "Este es un mensaje de error personalizado".

En resumen, comprender y manejar adecuadamente errores y excepciones en Python es crucial para escribir código robusto y confiable. Mediante el uso de la declaración try/except, puedes capturar y manejar excepciones; las cláusulas else y finally te permiten especificar código que se debe ejecutar dependiendo de si se generó una excepción, y la declaración raise te permite generar tus propias excepciones. Al combinar eficazmente estas herramientas, puedes manejar cualquier situación inesperada que pueda surgir cuando se está ejecutando tu código.

3.2.4 La declaración assert

La declaración assert te permite probar si se cumple cierta condición, y si no, el programa generará un AssertionError. Por lo general, se utiliza con fines de depuración, ayudando a asegurar que el estado del programa sea el esperado. Sigue la sintaxis assert condición [, mensaje_de_error].

x = 5
assert x < 10, "x should be less than 10"

En este ejemplo, dado que la condición x < 10 es verdadera, no sucede nada. Sin embargo, si x fuera mayor o igual a 10, el programa generaría un AssertionError con el mensaje "x debería ser menor que 10".

x = 15
assert x < 10, "x should be less than 10"

Esto producirá:

AssertionError: x should be less than 10

La declaración assert es una herramienta útil cuando deseas insertar rápidamente afirmaciones de depuración en un programa. Te permite confirmar la corrección de un programa o localizar errores más fácilmente al reducir las secciones de código donde podrían estar los errores. Sin embargo, es importante tener en cuenta que las afirmaciones pueden deshabilitarse globalmente con los conmutadores de línea de comandos -O y -OO, así como con la variable de entorno PYTHONOPTIMIZE en Python.

Recuerda, el manejo de excepciones y las afirmaciones son herramientas vitales en tu conjunto de herramientas de programación de Python. Mientras que el manejo de excepciones te permite lidiar con eventos inesperados durante la ejecución del programa, las afirmaciones te permiten verificar la corrección de tu código durante el desarrollo. Comprender y usar estas herramientas de manera efectiva mejorará significativamente la confiabilidad y robustez de tus programas.

3.2 Manejo de Errores y Excepciones

Al trabajar con Python, es importante entender los diferentes tipos de errores que pueden ocurrir. Los dos tipos principales son errores de sintaxis y excepciones. Los errores de sintaxis son el tipo más común y ocurren cuando el analizador de Python no puede entender una línea de código. Esto puede ser causado por un paréntesis faltante o una palabra clave mal escrita, por ejemplo.

Las excepciones, por otro lado, son un poco más complejas. Ocurren cuando surgen situaciones inesperadas mientras un programa se está ejecutando, incluso si el código es sintácticamente correcto. Hay muchos tipos diferentes de excepciones que pueden ocurrir, como la división por cero, errores de nombre y errores de tipo. Es importante que los programadores estén conscientes de estas excepciones y sepan cómo manejarlas correctamente.

Además de entender los tipos de errores que pueden ocurrir, también es importante saber cómo depurar tu código. Una técnica común es usar declaraciones de impresión para verificar los valores de las variables en diferentes puntos del programa. Otra técnica es usar un depurador, que te permite avanzar paso a paso por el código y ver exactamente qué está sucediendo en cada línea.

Al entender los diferentes tipos de errores que pueden ocurrir y cómo depurar tu código, puedes convertirte en un programador de Python más efectivo y eficiente.

Por ejemplo, aquí tienes un error de sintaxis:

# This line has a syntax error because it's missing a closing parenthesis
print("Hello, world!"

Ejecutar este código te da la siguiente salida:

  File "<stdin>", line 1
    print("Hello, world!"
                         ^
SyntaxError: unexpected EOF while parsing

Y aquí tienes una excepción:

# This line will raise an exception because you can't divide by zero
print(5 / 0)

Ejecutar este código te da la siguiente salida:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero

Incluso si tu código es sintácticamente correcto, aún puede generar excepciones cuando se encuentran condiciones inesperadas. Ahí es donde entra el manejo de errores y excepciones.

3.2.1 Manejo de Excepciones con try y except

Python proporciona las palabras clave try y except para capturar y manejar excepciones. Cuando ocurre un error, Python detiene la ejecución del código y, dependiendo del tipo de error, puede mostrar un mensaje de error. Al usar las palabras clave try y except, puedes indicarle a Python que maneje el error de manera elegante y continúe ejecutando el código.

La palabra clave try es seguida por un bloque de código que puede generar una excepción, y la palabra clave except es seguida por un bloque de código que especifica cómo manejar la excepción. Además, puedes usar la palabra clave else para especificar un bloque de código que se ejecuta si no se produce ninguna excepción, y la palabra clave finally para especificar un bloque de código que siempre se ejecuta independientemente de si se produce o no una excepción.

Aquí tienes un ejemplo básico:

try:
    # This line will raise an exception
    print(5 / 0)
except ZeroDivisionError:
    # This line will run if a ZeroDivisionError is raised
    print("You can't divide by zero!")

Ejecutar este código te da la siguiente salida:

You can't divide by zero!

En este ejemplo, el bloque try contiene código que podría generar una excepción. El bloque except contiene código que se ejecutará si se genera una excepción específica (en este caso, ZeroDivisionError) en el bloque try.

Si no sabes qué tipo de excepción puede generar una línea de código, puedes usar una declaración except sin especificar para capturar todas las excepciones:

try:
    # This line will raise an exception
    print(5 / 0)
except:
    # This line will run if any exception is raised
    print("An error occurred!")

3.2.2 Las cláusulas else y finally

También puedes incluir las cláusulas else y finally en una declaración try/except. La cláusula else se ejecuta si no se genera ninguna excepción, y la cláusula finally se ejecuta pase lo que pase:

try:
    # This line won't raise an exception
    print("Hello, world!")
except:
    print("An error occurred!")
else:
    print("No errors occurred!")
finally:
    print("This line runs no matter what.")

Al ejecutar este código, obtendrás la siguiente salida:

Hello, world!
No errors occurred!
This line runs no matter what.

En este ejemplo, como no se generó ninguna excepción en el bloque try, se ejecuta el bloque else. El bloque finally se ejecuta pase lo que pase, incluso si se generó y capturó una excepción.

3.2.3 Generación de Excepciones

Por último, puedes generar tus propias excepciones con la instrucción raise:

# This line will raise a ValueError
raise ValueError("This is a custom error message.")
# This line will raise a ValueError
raise ValueError("This is a custom error message.")

Te da la siguiente salida:

Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
ValueError: This is a custom error message.

Aquí, estamos generando una excepción ValueError con un mensaje de error personalizado. Esto puede ser útil cuando quieres proporcionar más información sobre qué salió mal, o cuando quieres detener el programa cuando se cumple cierta condición.

También puedes crear tus propias excepciones personalizadas definiendo nuevas clases de excepción. Esto puede ser útil si deseas crear un tipo específico de excepción que no esté cubierto por las excepciones integradas de Python:

class CustomError(Exception):
    pass

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

Esto generará una excepción ErrorPersonalizado con el mensaje "Este es un mensaje de error personalizado".

En resumen, comprender y manejar adecuadamente errores y excepciones en Python es crucial para escribir código robusto y confiable. Mediante el uso de la declaración try/except, puedes capturar y manejar excepciones; las cláusulas else y finally te permiten especificar código que se debe ejecutar dependiendo de si se generó una excepción, y la declaración raise te permite generar tus propias excepciones. Al combinar eficazmente estas herramientas, puedes manejar cualquier situación inesperada que pueda surgir cuando se está ejecutando tu código.

3.2.4 La declaración assert

La declaración assert te permite probar si se cumple cierta condición, y si no, el programa generará un AssertionError. Por lo general, se utiliza con fines de depuración, ayudando a asegurar que el estado del programa sea el esperado. Sigue la sintaxis assert condición [, mensaje_de_error].

x = 5
assert x < 10, "x should be less than 10"

En este ejemplo, dado que la condición x < 10 es verdadera, no sucede nada. Sin embargo, si x fuera mayor o igual a 10, el programa generaría un AssertionError con el mensaje "x debería ser menor que 10".

x = 15
assert x < 10, "x should be less than 10"

Esto producirá:

AssertionError: x should be less than 10

La declaración assert es una herramienta útil cuando deseas insertar rápidamente afirmaciones de depuración en un programa. Te permite confirmar la corrección de un programa o localizar errores más fácilmente al reducir las secciones de código donde podrían estar los errores. Sin embargo, es importante tener en cuenta que las afirmaciones pueden deshabilitarse globalmente con los conmutadores de línea de comandos -O y -OO, así como con la variable de entorno PYTHONOPTIMIZE en Python.

Recuerda, el manejo de excepciones y las afirmaciones son herramientas vitales en tu conjunto de herramientas de programación de Python. Mientras que el manejo de excepciones te permite lidiar con eventos inesperados durante la ejecución del programa, las afirmaciones te permiten verificar la corrección de tu código durante el desarrollo. Comprender y usar estas herramientas de manera efectiva mejorará significativamente la confiabilidad y robustez de tus programas.

3.2 Manejo de Errores y Excepciones

Al trabajar con Python, es importante entender los diferentes tipos de errores que pueden ocurrir. Los dos tipos principales son errores de sintaxis y excepciones. Los errores de sintaxis son el tipo más común y ocurren cuando el analizador de Python no puede entender una línea de código. Esto puede ser causado por un paréntesis faltante o una palabra clave mal escrita, por ejemplo.

Las excepciones, por otro lado, son un poco más complejas. Ocurren cuando surgen situaciones inesperadas mientras un programa se está ejecutando, incluso si el código es sintácticamente correcto. Hay muchos tipos diferentes de excepciones que pueden ocurrir, como la división por cero, errores de nombre y errores de tipo. Es importante que los programadores estén conscientes de estas excepciones y sepan cómo manejarlas correctamente.

Además de entender los tipos de errores que pueden ocurrir, también es importante saber cómo depurar tu código. Una técnica común es usar declaraciones de impresión para verificar los valores de las variables en diferentes puntos del programa. Otra técnica es usar un depurador, que te permite avanzar paso a paso por el código y ver exactamente qué está sucediendo en cada línea.

Al entender los diferentes tipos de errores que pueden ocurrir y cómo depurar tu código, puedes convertirte en un programador de Python más efectivo y eficiente.

Por ejemplo, aquí tienes un error de sintaxis:

# This line has a syntax error because it's missing a closing parenthesis
print("Hello, world!"

Ejecutar este código te da la siguiente salida:

  File "<stdin>", line 1
    print("Hello, world!"
                         ^
SyntaxError: unexpected EOF while parsing

Y aquí tienes una excepción:

# This line will raise an exception because you can't divide by zero
print(5 / 0)

Ejecutar este código te da la siguiente salida:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero

Incluso si tu código es sintácticamente correcto, aún puede generar excepciones cuando se encuentran condiciones inesperadas. Ahí es donde entra el manejo de errores y excepciones.

3.2.1 Manejo de Excepciones con try y except

Python proporciona las palabras clave try y except para capturar y manejar excepciones. Cuando ocurre un error, Python detiene la ejecución del código y, dependiendo del tipo de error, puede mostrar un mensaje de error. Al usar las palabras clave try y except, puedes indicarle a Python que maneje el error de manera elegante y continúe ejecutando el código.

La palabra clave try es seguida por un bloque de código que puede generar una excepción, y la palabra clave except es seguida por un bloque de código que especifica cómo manejar la excepción. Además, puedes usar la palabra clave else para especificar un bloque de código que se ejecuta si no se produce ninguna excepción, y la palabra clave finally para especificar un bloque de código que siempre se ejecuta independientemente de si se produce o no una excepción.

Aquí tienes un ejemplo básico:

try:
    # This line will raise an exception
    print(5 / 0)
except ZeroDivisionError:
    # This line will run if a ZeroDivisionError is raised
    print("You can't divide by zero!")

Ejecutar este código te da la siguiente salida:

You can't divide by zero!

En este ejemplo, el bloque try contiene código que podría generar una excepción. El bloque except contiene código que se ejecutará si se genera una excepción específica (en este caso, ZeroDivisionError) en el bloque try.

Si no sabes qué tipo de excepción puede generar una línea de código, puedes usar una declaración except sin especificar para capturar todas las excepciones:

try:
    # This line will raise an exception
    print(5 / 0)
except:
    # This line will run if any exception is raised
    print("An error occurred!")

3.2.2 Las cláusulas else y finally

También puedes incluir las cláusulas else y finally en una declaración try/except. La cláusula else se ejecuta si no se genera ninguna excepción, y la cláusula finally se ejecuta pase lo que pase:

try:
    # This line won't raise an exception
    print("Hello, world!")
except:
    print("An error occurred!")
else:
    print("No errors occurred!")
finally:
    print("This line runs no matter what.")

Al ejecutar este código, obtendrás la siguiente salida:

Hello, world!
No errors occurred!
This line runs no matter what.

En este ejemplo, como no se generó ninguna excepción en el bloque try, se ejecuta el bloque else. El bloque finally se ejecuta pase lo que pase, incluso si se generó y capturó una excepción.

3.2.3 Generación de Excepciones

Por último, puedes generar tus propias excepciones con la instrucción raise:

# This line will raise a ValueError
raise ValueError("This is a custom error message.")
# This line will raise a ValueError
raise ValueError("This is a custom error message.")

Te da la siguiente salida:

Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
ValueError: This is a custom error message.

Aquí, estamos generando una excepción ValueError con un mensaje de error personalizado. Esto puede ser útil cuando quieres proporcionar más información sobre qué salió mal, o cuando quieres detener el programa cuando se cumple cierta condición.

También puedes crear tus propias excepciones personalizadas definiendo nuevas clases de excepción. Esto puede ser útil si deseas crear un tipo específico de excepción que no esté cubierto por las excepciones integradas de Python:

class CustomError(Exception):
    pass

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

Esto generará una excepción ErrorPersonalizado con el mensaje "Este es un mensaje de error personalizado".

En resumen, comprender y manejar adecuadamente errores y excepciones en Python es crucial para escribir código robusto y confiable. Mediante el uso de la declaración try/except, puedes capturar y manejar excepciones; las cláusulas else y finally te permiten especificar código que se debe ejecutar dependiendo de si se generó una excepción, y la declaración raise te permite generar tus propias excepciones. Al combinar eficazmente estas herramientas, puedes manejar cualquier situación inesperada que pueda surgir cuando se está ejecutando tu código.

3.2.4 La declaración assert

La declaración assert te permite probar si se cumple cierta condición, y si no, el programa generará un AssertionError. Por lo general, se utiliza con fines de depuración, ayudando a asegurar que el estado del programa sea el esperado. Sigue la sintaxis assert condición [, mensaje_de_error].

x = 5
assert x < 10, "x should be less than 10"

En este ejemplo, dado que la condición x < 10 es verdadera, no sucede nada. Sin embargo, si x fuera mayor o igual a 10, el programa generaría un AssertionError con el mensaje "x debería ser menor que 10".

x = 15
assert x < 10, "x should be less than 10"

Esto producirá:

AssertionError: x should be less than 10

La declaración assert es una herramienta útil cuando deseas insertar rápidamente afirmaciones de depuración en un programa. Te permite confirmar la corrección de un programa o localizar errores más fácilmente al reducir las secciones de código donde podrían estar los errores. Sin embargo, es importante tener en cuenta que las afirmaciones pueden deshabilitarse globalmente con los conmutadores de línea de comandos -O y -OO, así como con la variable de entorno PYTHONOPTIMIZE en Python.

Recuerda, el manejo de excepciones y las afirmaciones son herramientas vitales en tu conjunto de herramientas de programación de Python. Mientras que el manejo de excepciones te permite lidiar con eventos inesperados durante la ejecución del programa, las afirmaciones te permiten verificar la corrección de tu código durante el desarrollo. Comprender y usar estas herramientas de manera efectiva mejorará significativamente la confiabilidad y robustez de tus programas.