Erros, rapidinho
Neste post, vamos dar uma olhada rápida em como criar e lidar com erros. Usaremos Python nos exemplos, mas o mesmo conceito existe em várias linguagens.
O que é um erro?
Essa pode parecer uma pergunta boba, mas em programação, um erro pode não ser a mesma coisa que o significado conversacional da palavra.
Se você já escreveu um código como este, você poderia ter levantado um erro:
a = int(input("Digite um número: "))
b = int(input("Digite outro número: "))
if b == 0:
print("Você não pode dividir por zero!")
else:
print(f"{a} / {b} = {a / b}")
Neste exemplo, estamos verificando se o segundo número é zero antes de fazer a divisão, mas em vez de levantar um erro, estamos imprimindo uma mensagem. Esta é uma prática comum, mas não é a única maneira de lidar com erros.
Levantando um erro
Em Python, você pode levantar um erro usando o raise. Aqui está um exemplo:
def divide(a, b):
if b == 0:
raise ValueError("Você não pode dividir por zero!")
return a / b
a = int(input("Digite um número: "))
b = int(input("Digite outro número: "))
divide(a, b)
Neste exemplo, se o usuário inserir zero como o segundo número, a função irá levantar um erro. Isso irá parar a execução do programa onde ele está, imprimir um erro, e sair. Nada depois da linha onde o erro foi levantado será executado.
Lidando com erros
Não precisamos deixar o programa crashar quando qualquer erro é levantado. Na verdade, na maioria das vezes devemos lidar com os erros. É assim que podemos fazer isso:
def divide(a, b):
if b == 0:
raise ValueError("Você não pode dividir por zero!")
return a / b
a = int(input("Digite um número: "))
b = int(input("Digite outro número: "))
try:
result = divide(a, b)
print(f"{a} / {b} = {result}")
except ValueError as e:
print("Ocorreu um erro: ", e)
Neste exemplo o programa não irá crashar. Em vez disso, após o erro ser
levantado, a instrução return (ou qualquer coisa que poderia ter vindo após a
linha onde o erro foi levantado) não será executada. O programa irá pular
para o bloco except e continuar a execução a partir dali.
Este exemplo é bobo, já que Python já irá levantar um erro se você tentar dividir por zero. Mas ele serve para ilustrar o conceito.
Conclusão
Erros são um conceito presente em várias linguagens. Eles são uma maneira de parar a execução de um programa quando algo inesperado acontece. Podemos levantar erros nós mesmos, ou podemos deixar a linguagem levantá-los para nós. Também podemos lidar com erros, para que o programa não crashe quando eles acontecem.
No próximo post, vamos dar uma olhada em por que algumas pessoas dizem que erros/exceções são um conceito ruim e quais são as alternativas.
