Como usar a palavra-chave "raise" em Python [duplicate]
o uso de exemplo ajudaria.
6 answers
É usado para criar os teus próprios erros.if something: raise Exception('My error!')
O segundo é voltar a alterar aactual excepção num manipulador de excepções, para que possa ser tratado mais acima na pilha de chamadas.
try:
generate_exception()
except SomeException as e:
if not can_handle(e):
raise
handle_exception(e)
if something:
raise Exception('My error!')
Alguns exemplos aqui
raise
sem quaisquer argumentos é um uso especial da sintaxe python. Significa abrir a excepção e voltar a aumentá-la. Se esta utilização pudesse ter sido chamada reraise
.
raise
A Partir De A Referência Da Linguagem Python:
Se não estiverem presentes expressões, levante novamente a última excepção que estava ativo no escopo atual.
Se raise
For utilizado isoladamente sem qualquer argumento, é estritamente utilizado parareraise -ing. Se for feito na situação isto não é uma repetição de outra exceção, o seguinte erro é mostrado:
RuntimeError: No active exception to reraise
Você pode usá-lo para criar erros como parte da verificação de erros:
if (a < b):
raise ValueError()
Ou lidar com alguns erros, e depois passá-los como parte do tratamento de erros:
try:
f = open('file.txt', 'r')
except IOError:
# do some processing here
# and then pass the error on
raise
raise
causa uma exceção a ser levantada. Algumas outras línguas usam o verbo 'throw' em vez disso.
Pretende-se assinalar uma situação de erro; indica que a situação é excepcional para o fluxo normal.
As exceções levantadas podem ser capturadas novamente pelo código 'upstream' (um bloco circundante, ou uma função anterior na pilha) para lidar com ele, usando um try
, except
combinação.
Além de raise Exception("message")
e raise
o Python 3 introduziu uma nova forma, raise Exception("message") from e
. É chamado de encadeamento de exceção, ele permite que você preserve a exceção original (a causa raiz) com o seu traceback.
Mais informações: https://www.python.org/dev/peps/pep-3134/