Exceções

As exceções em Python são eventos que ocorrem durante a execução de um programa que interrompem o fluxo normal das instruções. Elas são usadas para lidar com erros e situações inesperadas de forma elegante e controlada. Neste tutorial, vamos explorar o conceito de exceções em Python, como elas funcionam, como usá-las e como criar suas próprias exceções personalizadas.

1. Tipos de Exceções Embutidas:

Python possui uma variedade de exceções embutidas que são lançadas em diferentes situações. Alguns exemplos comuns incluem:

  • SyntaxError: Ocorre quando há um erro de sintaxe no código.
  • NameError: Ocorre quando uma variável não é encontrada.
  • TypeError: Ocorre quando uma operação é aplicada a um objeto do tipo errado.
  • ValueError: Ocorre quando uma função recebe um argumento do tipo certo, mas com um valor inválido.

2. Bloco try-except:

Para lidar com exceções em Python, você pode usar o bloco try-except. O código que pode gerar uma exceção é colocado dentro do bloco try. Se uma exceção for lançada, o bloco except correspondente será executado.

try:
    resultado = 10 / 0  # Tentativa de divisão por zero
except ZeroDivisionError:
    print("Erro: Divisão por zero não é permitida.")

3. Bloco finally:

Você pode usar o bloco finally para especificar um bloco de código que será sempre executado, independentemente de uma exceção ser lançada ou não.

try:
    arquivo = open("arquivo.txt", "r")
    conteudo = arquivo.read()
except FileNotFoundError:
    print("Erro: Arquivo não encontrado.")
finally:
    arquivo.close()

4. Bloco else:

O bloco else pode ser usado em conjunto com try-except para especificar um bloco de código que será executado se nenhuma exceção for lançada.

try:
    numero = int(input("Digite um número: "))
except ValueError:
    print("Erro: Entrada inválida. Por favor, digite um número.")
else:
    print(f"Você digitou: {numero}")

5. Criando Exceções Personalizadas:

Você também pode criar suas próprias exceções personalizadas, estendendo a classe Exception.

class ValorNegativoError(Exception):
    def __init__(self, mensagem="O valor não pode ser negativo."):
        self.mensagem = mensagem
        super().__init__(self.mensagem)

numero = -5
try:
    if numero < 0:
        raise ValorNegativoError
except ValorNegativoError as e:
    print(e)  # Saída: O valor não pode ser negativo.

O gerenciamento de exceções em Python é uma técnica poderosa para lidar com situações de erro e garantir que seu programa possa lidar com problemas de forma controlada. Ao utilizar os blocos try, except, finally e else, bem como criar suas próprias exceções personalizadas quando necessário, você pode escrever código robusto e resistente a falhas.