Python · Intermediário · Português · Técnico
encadeamento de exceções
Uso de raise NovoErro from erro para ligar uma exceção à que a causou, preservando ambas no traceback. Mostra a causa original ao traduzir erros de camadas inferiores.
Onde usar
Aparece ao converter um erro de baixo nível, como KeyError, em um erro do domínio, sem perder o contexto. O traceback exibe a causa como 'direct cause of the following exception'.
Em código
def achar(d, k):
try:
return d[k]
except KeyError as e:
raise ValueError(f'sem {k}') from e
achar({}, 'x')Exemplos
Levante o erro de domínio com raise from para manter a causa.
O traceback mostra a causa direta do novo erro.
Cuidado
Usar raise Novo from None apaga a causa do traceback; só faça isso quando o erro original realmente não ajudar.
Sinônimos
raise from, exception chaining