Exceção de aumento em Python

Resumo : neste tutorial, você aprenderá como gerar exceções usando a raiseinstrução Python.

Introdução à instrução raise do Python

Para gerar uma exceção , você usa a raiseinstrução:

raise ExceptionType()Linguagem de código:  Python  ( python )

Deve ExceptionType()ser uma subclasse da BaseExceptionclasse. Normalmente, é uma subclasse da Exceptionclasse. Observe que the ExceptionTypenão precisa ser herdado diretamente da Exceptionclasse. Ele pode herdar indiretamente de uma classe que é uma subclasse da classe Exception.

A BaseExceptionclasse possui o __init__método que aceita um *argsargumento. Isso significa que você pode passar qualquer número de argumentos para o objeto de exceção ao gerar uma exceção.

O exemplo a seguir usa a raiseinstrução para gerar uma ValueErrorexceção. Ele passa três argumentos para o ValueError __init__método:

try:
    raise ValueError('The value error exception', 'x', 'y')
except ValueError as ex:
    print(ex.args)Linguagem de código:  Python  ( python )

Saída:

('The value error exception', 'x', 'y')Linguagem de código:  texto simples  ( texto simples )

Recriar a exceção atual

Às vezes, você deseja registrar uma exceção e gerar a mesma exceção novamente. Nesse caso, você pode usar a raiseinstrução sem especificar o objeto de exceção.

Por exemplo, o seguinte define uma division()função que retorna a divisão de dois números:

def division(a, b):
    try:
        return a / b
    except ZeroDivisionError as ex:
        print('Logging exception:', str(ex))
        raiseLinguagem de código:  Python  ( python )

Se você passar zero para o segundo argumento da division()função, ZeroDivisionErrorocorrerá a exceção. No entanto, em vez de tratar a exceção, você pode registrá-la e aumentá-la novamente.

Observe que você não precisa especificar o objeto de exceção na raiseinstrução. Neste caso, Python sabe que a raiseinstrução irá gerar a exceção atual que foi capturada pela exceptcláusula.

O código a seguir causa uma ZeroDivisionErrorexceção:

division(1, 0)Linguagem de código:  Python  ( python )

E você verá a mensagem de registro e a exceção na saída:

Logging exception: division by zero
Traceback (most recent call last):
  File "c:/pythontutorial/app.py", line 9, in <module>
    division(1, 0)
  File "C:/pythontutorial/app.py", line 3, in division
    return a / b
ZeroDivisionError: division by zeroLinguagem de código:  texto simples  ( texto simples )

Levantar outra exceção durante o tratamento de uma exceção

Ao lidar com uma exceção, você pode querer gerar outra exceção. Por exemplo:

def division(a, b):
    try:
        return a / b
    except ZeroDivisionError as ex:
        raise ValueError('b must not zero')Linguagem de código:  Python  ( python )

Na division()função, levantamos uma ValueErrorexceção se isso ZeroDivisionErrorocorrer.

Se você executar o código a seguir, obterá os detalhes do rastreamento de pilha:

division(1, 0)Linguagem de código:  Python  ( python )

Saída:

Traceback (most recent call last):
  File "C:/pythontutorial/app.py", line 3, in division
    return a / b
ZeroDivisionError: division by zero

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:/pythontutorial/app.py", line 8, in <module>
    division(1, 0)
  File "C:/pythontutorial/app.py", line 5, in division
    raise ValueError('b must not zero')
ValueError: b must not zeroLinguagem de código:  texto simples  ( texto simples )

Primeiro, ZeroDivisionErrorocorre a exceção:

Traceback (most recent call last):
  File "C:/pythontutorial/app.py", line 3, in division
    return a / b
ZeroDivisionError: division by zeroLinguagem de código:  texto simples  ( texto simples )

Segundo, durante o tratamento da ZeroDivisionErrorexceção, a ValueErrorexceção ocorre:

Traceback (most recent call last):
  File "C:/pythontutorial/app.py", line 8, in <module>
    division(1, 0)
  File "C:/pythontutorial/app.py", line 5, in division
    raise ValueError('b must not zero')
ValueError: b must not zeroLinguagem de código:  texto simples  ( texto simples )

Resumo

  • Use a raiseinstrução Python para gerar uma exceção.
  • Ao lidar com exceções, você pode gerar a mesma ou outra exceção.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *