Como usar a palavra-chave "raise" em Python [duplicate]

[[2] esta pergunta já tem uma resposta aqui:

Li A definição oficial de "aumento", mas ainda não entendo o que faz.

Em termos mais simples, o que é "aumentar"?

o uso de exemplo ajudaria.

Author: Jean-François Corbett, 2012-12-19

6 answers

Tem dois objectivos.

Yentup deu o primeiro.

É 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)
 252
Author: Ignacio Vazquez-Abrams, 2017-05-23 12:02:48
É usado para criar erros.
if something:
    raise Exception('My error!')

Alguns exemplos aqui

 28
Author: jackcogdill, 2015-01-09 11:48:53

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

 21
Author: Sohail Si, 2017-10-24 12:23:05

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
 7
Author: sampson-chen, 2012-12-19 17:49:16

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.

 6
Author: Martijn Pieters, 2012-12-19 17:30:15

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.

É muito semelhante às exceções internas de c#.

Mais informações: https://www.python.org/dev/peps/pep-3134/

 6
Author: Stan Prokop, 2017-05-04 08:11:41