ExpertiDict

Python · Intermediário · Português · Técnico

encadeamento de exceções

/ẽ.ka.de.ˈɐ̃.mẽ.tu dʒi e.ze.ˈsõjs/substantivo

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

Veja também

Todos os termos de Python