Múltiplas Excepções em Python

Manav Narula 30 janeiro 2023
  1. Uso de vírgulas e parênteses para identificar várias exceções
  2. Use a função suppress() para capturar múltiplas exceções
Múltiplas Excepções em Python

Na Programação, uma exceção é uma ocorrência que perturba o fluxo normal do programa. Em Python, isso é representado como um erro. Uma exceção pode ser de diferentes tipos, dependendo de sua causa, como IndexError, KeyError e mais.

Podemos usar os blocos try e except para lidar com exceções. O bloco try contém algum código que pode gerar uma exceção, e se uma exceção for levantada, podemos especificar o código alternativo no bloco except.

Por exemplo,

try:
    print(5 / 0)
except:
    print(5 / 1)

Resultado:

5

O 5/0 levanta uma exceção para que ele execute o código no bloco except.

Observe que é possível levantar exceções manualmente também usando a palavra-chave raise.

Também podemos lidar com várias exceções em Python. Sabemos que temos diferentes tipos de exceções em Python, portanto, podemos ter várias instruções except para diferentes exceções.

Por exemplo,

try:
    raise ValueError()
except ValueError:
    print("Value Error")
except KeyError:
    print("Key Error")

Resultado:

Value Error

Também é possível capturar várias exceções com uma instrução except. Esses métodos são discutidos abaixo.

Uso de vírgulas e parênteses para identificar várias exceções

A primeira maneira de fazer isso é separar as exceções com uma vírgula e colocá-las entre parênteses. O código a seguir mostra como.

try:
    raise ValueError()
except (ValueError, KeyError):
    print("Error")

Resultado:

Error

Se qualquer exceção àquela mencionada entre parênteses for encontrada, o código neste bloco é executado. Também podemos atribuir ao objeto de exceção (também chamado de objeto de erro) algum nome. e é o nome mais comumente usado para o objeto de erro. Por exemplo,

try:
    raise ValueError()
except (ValueError, KeyError) as e:
    print("Error")

Resultado:

Error

A palavra-chave as cria o alias para o nome do objeto. Abaixo do Python 2.5, era possível eliminar o uso da palavra-chave as simplesmente separando o nome do objeto de erro usando uma vírgula, conforme mostrado abaixo.

try:
    raise ValueError()
except (ValueError, KeyError), e:
    print("Error")

Resultado:

Error

Use a função suppress() para capturar múltiplas exceções

A biblioteca contextlib fornece uma função muito útil chamada suppress() que também pode ser usada para lidar com múltiplas exceções.

Esta função combina as instruções try, except e pass para uma linha de código. É usado com a instrução with, que também é usada no tratamento de exceções e torna o código mais limpo e legível.

O código a seguir mostra como usar essa função.

from contextlib import suppress

with suppress(FileNotFoundError):
    os.remove("somefile.tmp")

O código acima é equivalente ao seguinte programa com as instruções try, except e pass.

try:
    os.remove("somefile.tmp")
except FileNotFoundError:
    pass

A instrução pass é usada quando não queremos executar nada, mas evitar qualquer erro para código vazio.

Podemos usar a função suppress para múltiplas exceções, conforme mostrado abaixo.

from contextlib import suppress

with suppress(FileNotFoundError, KeyError):
    os.remove("somefile.tmp")
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

Artigo relacionado - Python Exception