Como Capturar Múltiplas Exceções em Python em Uma Linha

Ana Maria Gomes
5 minutos de leitura

Conteúdos do tutorial

Ao escrever código em Python, tratar exceções é uma parte crítica para criar programas robustos e resistentes a erros. Às vezes, você pode se deparar com situações em que deseja realizar a mesma ação para diferentes tipos de exceções. Em vez de escrever vários blocos except, o Python permite capturar múltiplas exceções em uma única linha. Vamos explorar como fazer isso efetivamente.

Capturando Múltiplas Exceções com uma Tupla

O bloco try-except do Python é uma ferramenta poderosa para o tratamento de exceções. Se você deseja capturar múltiplas exceções e tratá-las da mesma maneira, você pode usar uma tupla para especificar as exceções que deseja capturar. Aqui está a sintaxe:

try:
    # Código que pode gerar uma exceção
except (TipoDeExcecao1, TipoDeExcecao2) as e:
    # Tratar a exceção

Os parênteses são necessários para criar uma tupla de tipos de exceção. A parte as e da sintaxe atribui a exceção capturada à variável e, que você pode então usar dentro do bloco except.

Exemplo de Captura de Múltiplas Exceções

Vamos olhar para um exemplo simples. Suponha que você tenha uma função que processa a entrada do usuário, mas você quer tratar ValueError e TypeError da mesma forma:

try:
    entrada_do_usuario = int(input("Digite um número: "))
    resultado = 10 / entrada_do_usuario
except (ValueError, TypeError) as erro:
    print("Por favor, digite um número válido.")

Neste exemplo, se o usuário digitar um valor não numérico, um ValueError será gerado, e se entrada_do_usuario for None ou não for um número, um TypeError será gerado. Ambas as exceções são capturadas pelo mesmo bloco except, e o usuário é solicitado a digitar um número válido.

Melhores Práticas e Compatibilidade

É importante notar que a sintaxe para capturar múltiplas exceções evoluiu ao longo do tempo. No Python 2, você pode ver a exceção atribuída com uma vírgula, assim:

try:
    # Algum código
except (TipoDeExcecao1, TipoDeExcecao2), e:
    # Tratar a exceção

No entanto, essa sintaxe está obsoleta e não funciona no Python 3. Para garantir que seu código seja compatível com o Python 3 e versões futuras, sempre use a palavra-chave as para atribuir a exceção capturada a uma variável.

Usando o Gerenciador de Contexto suppress

O Python 3.4 introduziu o gerenciador de contexto suppress do módulo contextlib, que permite ignorar exceções especificadas:

from contextlib import suppress

with suppress(ValueError, TypeError):
    entrada_do_usuario = int(input("Digite um número: "))
    resultado = 10 / entrada_do_usuario

Neste exemplo, se ocorrer um ValueError ou TypeError, ele será ignorado, e o programa continuará sem executar nenhum código de tratamento de exceção.

Resumo

Em resumo, para capturar múltiplas exceções em uma linha em Python, use uma tupla para especificar as exceções e a palavra-chave as para atribuir a exceção capturada a uma variável. Essa abordagem é limpa, concisa e compatível com as versões atuais e futuras do Python. Lembre-se de usar o gerenciador de contexto suppress se você quiser ignorar certas exceções sem escrever nenhum código de tratamento. Seguindo essas diretrizes, você pode escrever um tratamento de exceções mais eficiente e legível em seus programas Python.

Inscreva-se gratuitamente e fique atualizado

Receba toda semana um resumo dos principais conteúdos da Asimov direto no seu e-mail. 100% livre de spam.

Áreas de interesse:
Conteúdos do tutorial