Tipos de Erros DinĂąmicos
Ăs vezes, queremos permitir que qualquer tipo de erro seja retornado sem escrever nosso prĂłprio enum cobrindo todas as possibilidades diferentes. O trait std::error::Error
torna fĂĄcil criar um objeto trait que pode conter qualquer erro.
Speaker Notes
This slide should take about 5 minutes.
A função read_count
pode retornar std::io::Error
(de operaçÔes de arquivo) ou std::num::ParseIntError
(de String::parse
).
Encaixotar (boxing) erros economiza cĂłdigo, mas sacrifica a capacidade de lidar elegantemente com diferentes casos de erro de forma individualizada no programa. Como tal, geralmente nĂŁo Ă© uma boa ideia usar Box<dyn Error>
na API pĂșblica de uma biblioteca, mas pode ser uma boa opção em um programa onde vocĂȘ sĂł quer exibir a mensagem de erro em algum lugar.
Certifique-se de implementar o trait std::error::Error
ao definir um tipo de erro personalizado para que ele possa ser encaixotado. Mas se vocĂȘ precisa suportar o atributo no_std
, tenha em mente que o trait std.error::Error
Ă© atualmente compatĂvel com no_std
apenas em nightly.