🎯 Exceções em Python
Em poucas palavras
Definição técnica ou simplificada do conceito.
📝 Notas e Desenvolvimento
Em Python, exceções são eventos que ocorrem durante a execução de um programa e interrompem o fluxo normal das instruções. Elas indicam que algo inesperado aconteceu, como um erro de divisão por zero, um arquivo não encontrado ou um erro de tipo. Python oferece mecanismos para lidar com essas exceções, permitindo que você escreva código mais robusto e tolerante a falhas.
Tratamento de Exceções:
A estrutura básica para lidar com exceções é o bloco try…except:
try:
# Código que pode gerar uma exceção
except TipoDeExcecao:
# Código para lidar com a exceçãotry: O blocotrycontém o código que você quer monitorar em busca de exceções.except: O blocoexceptespecifica o tipo de exceção que você quer tratar e o código que será executado se essa exceção ocorrer.
Exemplo:
import sys
try:
x = int(input("x: "))
y = int(input("y: "))
except ValueError:
print("Error: Invalid input")
sys.exit(1)
try:
result = x / y
except ZeroDivisionError:
print("Error: Cannot divide by 0.")
sys.exit(1)
print(f"{x} / {y} = {result}")Explicação:
- Primeiro
try…except:- Tenta converter a entrada do usuário para inteiros.
- Se o usuário digitar algo que não pode ser convertido para um inteiro, uma exceção
ValueErroré levantada. - O bloco
except ValueErrorcaptura essa exceção e imprime uma mensagem de erro. sys.exit(1)encerra o programa com um código de erro.
- Segundo
try…except:- Tenta dividir
xpory. - Se
yfor zero, uma exceçãoZeroDivisionErroré levantada. - O bloco
except ZeroDivisionErrorcaptura essa exceção e imprime uma mensagem de erro. sys.exit(1)encerra o programa com um código de erro.
- Tenta dividir
print(f"{x} / {y} = {result}"): Se nenhuma exceção ocorrer, esta linha imprime o resultado da divisão.
Múltiplos except:
Você pode ter múltiplos blocos except para tratar diferentes tipos de exceções:
try:
# Código que pode gerar várias exceções
except ValueError:
# Lida com erros de conversão de tipo
except FileNotFoundError:
# Lida com erros de arquivo não encontrado
except Exception as e:
# Lida com qualquer outra exceção (boa prática para tratamento genérico)
print(f"An error occurred: {e}")else e finally:
else: O blocoelseé executado se nenhuma exceção ocorrer no blocotry.finally: O blocofinallyé sempre executado, independentemente de uma exceção ter ocorrido ou não. É usado para liberar recursos (como fechar arquivos) ou realizar outras tarefas de limpeza.
Exemplo com else e finally:
try:
f = open("meu_arquivo.txt", "r")
conteudo = f.read()
except FileNotFoundError:
print("Arquivo não encontrado.")
else:
print(conteudo)
finally:
if 'f' in locals(): #Verifica se a variavel f foi definida
f.close()
print("Finalizando...")Levantando Exceções:
Você também pode levantar suas próprias exceções usando a palavra-chave raise:
def validar_idade(idade):
if idade < 0:
raise ValueError("Idade não pode ser negativa.")
return TrueDica:
É uma boa prática colocar apenas o código estritamente necessário dentro do bloco try. Isso ajuda a isolar a fonte potencial da exceção e facilita a depuração.
Referências:
🔗 Conexões e Contexto
- Atlas: MdC - Programação
- Notas Relacionadas: