PĂąnicos (Panics)

Rust lida com erros fatais com um “pñnico”.

O Rust irå disparar um panic (pùnico) se um erro fatal ocorrer em tempo de execução:

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  • PĂąnicos sĂŁo para erros irrecuperĂĄveis e inesperados.
    • PĂąnicos sĂŁo sintomas de bugs no programa.
    • Falhas em tempo de execução como verificaçÔes de limites falhadas podem disparar um pĂąnico
    • AsserçÔes (como assert!) disparam um pĂąnico em caso de falha
    • PĂąnicos com moticos especĂ­ficos podem usar a macro panic!.
  • Um pĂąnico irĂĄ “desenrolar” a pilha, descartando valores como se as funçÔes tivessem retornado.
  • Use APIs que nĂŁo disparam erros do tipo pĂąnico (como Vec::get) se nĂŁo for aceitĂĄvel o travamento do programa.

Speaker Notes

This slide should take about 3 minutes.

Por padrão, um pùnico causarå a resolução da pilha. A resolução pode ser capturada:

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
  • Capturar Ă© incomum; nĂŁo tente implementar exceçÔes com catch_unwind!
  • Isso pode ser Ăștil em servidores que devem continuar rodando mesmo se uma requisição tenha falhado.
  • Isso nĂŁo funciona se panic = 'abort' estiver definido em seu Cargo.toml.