Probar con bloques try-except para invocación
En este paso, aprenderás cómo usar bloques try-except
para manejar posibles errores al llamar a objetos en Python. Esto es especialmente útil cuando no estás seguro de si un objeto es llamable (callable) o si llamarlo podría generar una excepción.
Comencemos con un ejemplo en el que intentamos llamar a un objeto que puede no ser llamable:
def my_function():
return "Hello from my_function!"
x = 10
objects_to_test = [my_function, x]
for obj in objects_to_test:
try:
result = obj()
print(f"Object is callable, result: {result}")
except TypeError as e:
print(f"Object is not callable: {e}")
Agrega este código a tu archivo callable_example.py
, reemplazando el contenido anterior.
Ahora, ejecuta el script utilizando el siguiente comando en la terminal:
python callable_example.py
Deberías ver la siguiente salida:
Object is callable, result: Hello from my_function!
Object is not callable: 'int' object is not callable
En este ejemplo, iteramos a través de una lista de objetos, intentando llamar a cada uno. El bloque try
intenta llamar al objeto. Si el objeto es llamable y la llamada tiene éxito, se imprime el resultado. Si el objeto no es llamable, se genera una excepción TypeError
, y el bloque except
captura la excepción e imprime un mensaje adecuado.
Ahora, consideremos un caso en el que el objeto es llamable, pero llamarlo podría generar un tipo diferente de excepción:
def my_function(a, b):
return a / b
try:
result = my_function(10, 0)
print(f"Result: {result}")
except ZeroDivisionError as e:
print(f"Error: {e}")
except TypeError as e:
print(f"Error: {e}")
Agrega este código a tu archivo callable_example.py
, reemplazando el contenido anterior.
Ejecuta el script nuevamente:
python callable_example.py
Deberías ver la siguiente salida:
Error: division by zero
En este caso, my_function
es llamable, pero llamarlo con b = 0
genera una excepción ZeroDivisionError
. El bloque try-except
captura esta excepción específica y la maneja de manera adecuada.
Usar bloques try-except
te permite escribir código más robusto y confiable al anticipar y manejar posibles errores que pueden ocurrir al llamar a objetos.