Teste com try-except para Invocação
Nesta etapa, você aprenderá como usar blocos try-except para lidar com possíveis erros ao chamar objetos em Python. Isso é particularmente útil quando você não tem certeza se um objeto é callable ou se chamá-lo pode gerar uma exceção.
Vamos começar com um exemplo onde tentamos chamar um objeto que pode não ser callable:
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}")
Adicione este código ao seu arquivo callable_example.py, substituindo o conteúdo anterior.
Agora, execute o script usando o seguinte comando no terminal:
python callable_example.py
Você deve ver a seguinte saída:
Object is callable, result: Hello from my_function!
Object is not callable: 'int' object is not callable
Neste exemplo, iteramos por uma lista de objetos, tentando chamar cada um. O bloco try tenta chamar o objeto. Se o objeto for callable e a chamada for bem-sucedida, o resultado é impresso. Se o objeto não for callable, um TypeError é gerado, e o bloco except captura a exceção e imprime uma mensagem apropriada.
Agora, vamos considerar um caso em que o objeto é callable, mas chamá-lo pode gerar um tipo diferente de exceção:
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}")
Adicione este código ao seu arquivo callable_example.py, substituindo o conteúdo anterior.
Execute o script novamente:
python callable_example.py
Você deve ver a seguinte saída:
Error: division by zero
Neste caso, my_function é callable, mas chamá-la com b = 0 gera um ZeroDivisionError. O bloco try-except captura essa exceção específica e a trata de forma adequada.
Usar blocos try-except permite que você escreva um código mais robusto e confiável, antecipando e lidando com possíveis erros que podem ocorrer ao chamar objetos.