Curso de Python

Aula 18 - Exceções e Tratamento de Erros

Exceções e Tratamento de Erros

Exceções são essenciais num programa para mostrar uma mensagem menos assustadora, mas não só por causa disso, os erros também são um péssimo vilão, uma vez que não foram identificados, o programa todo se quebra e o usuário fica perdido. As exceções tratam erros gerais, mas você pode especificar qual erro deseja tratar.

Sintaxe Básica

sintaxe_try_except.py
try:
    # bloco de código
except:
    # mensagem de erro

Primeiramente utilizamos o try, e dentro de seu bloco de códigos inserimos o código que é suspeito de falhas. Logo em seguida, fora do bloco de códigos do try, utilizamos o except, e no bloco de código do except colocamos os códigos que serão exibidos caso ocorra algum erro.

Exemplos Práticos

Exemplo 1: Tratando um Erro de Divisão

Vamos ver o seguinte exemplo em que tentamos dividir uma STRING por um INT:

erro_divisao.py
try:
    divisao = 3 / "string"
    print(divisao) # Isso sempre dará um erro porque não é possível dividir um inteiro por uma string.
except:
    print("Ocorreu um erro!")
Saída:
Ocorreu um erro!

Exemplo 2: Tratando Erros com Input do Usuário

É muito recomendado que se utilize tratamento de erros em todo programa que você for criar, especialmente quando é utilizado a interação com o usuário (os inputs), mesmo que você não suspeite que aconteça erros. Vamos ver um exemplo geral:

soma_com_input.py
try:
    n1 = int(input('Digite o primeiro número: '))
    n2 = int(input('Digite o segundo número: '))
    print(f'A soma entre {n1} e {n2} é {n1 + n2}')
except:
    print('Ops! Não foi possível calcular a soma entre os dois números!')

Aqui tentamos realizar a soma entre n1 e n2, mas surge uma pergunta: "Como que isso pode dar um erro?". Uma das respostas é se o usuário digitar um número decimal (float), isso causaria um erro porque declaramos n1 e n2 como inteiros, e não decimais. Outra possível falha é caso o usuário não digitasse nada e apenas apertasse ENTER, isso também seria um erro pois ENTER é um valor nulo, não um inteiro.