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.
Cursos de programação gratuitos com certificado
Aprenda a programar e desenvolva soluções para o seu trabalho com Python para alcançar novas oportunidades profissionais. Aqui na Asimov você encontra:
- Conteúdos gratuitos
- Projetos práticos
- Certificados
- +20 mil alunos e comunidade exclusiva
- Materiais didáticos e download de código
Comentários