Múltiplas Excepções em Python
- Uso de vírgulas e parênteses para identificar várias exceções
-
Use a função
suppress()
para capturar múltiplas exceções
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 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