Manejo de errores
15 pasos en 5 series de Rust.
Rust no tiene excepciones, así que el manejo de errores vive en el sistema de tipos y no puedes ignorarlo por accidente. Primero Option, luego Result y el operador ? que lo hace llevadero.
Después escribir tus propios tipos de error, que es donde terminan casi todos los proyectos reales, y al final los panics: cuándo usarlos, cómo atraparlos, y por qué un unwrap en código de biblioteca tarde o temprano te va a dejar en vergüenza.
Option
- OptionRepresentar un valor que puede estar ausente.
- Combinadores de OptionTrabajar dentro de un Option en vez de desenvolverlo a cada paso.
- Entre Option y ResultLas dos conversiones que vale memorizar: ok_or agrega un error, ok lo descarta.
Result y el operador ?
- Result y ?Errores recuperables, y el operador ? de retorno temprano.
- El operador ?? devuelve el error temprano, y el camino feliz se lee como una línea recta.
- Reformar erroresmap_err reescribe el error y deja en paz el valor exitoso.
- Devolver Result desde mainmain puede devolver un Result, y el runtime reporta el error por ti.
Tus propios tipos de error
- Un enum de error propioUn enum por modo de falla, con un impl de Display que se lee como una oración.
- Implementar std::error::ErrorEl trait Error deja a tu tipo viajar como error en un Box y reportar una causa.
- Las conversiones From impulsan ?Implementa From para cada error subyacente y ? convierte por su cuenta.
- Box<dyn Error>Un trait object en un Box acepta cualquier error; sirve para código de aplicación y mains.
- TryFrom para conversiones verificadasTryFrom es From para conversiones que pueden fallar, y te regala try_into.
Panics y recuperación
- Panic o ResultLos panics son para bugs; los Results, para condiciones que quien llama puede manejar.
- Reaccionar según el tipo de errorHacer match sobre la variante del error para que cada falla tenga su propia recuperación.
Bis
- config_check.rsUn pipeline de validación: parsear texto clave-valor, juntar cada problema, reportar.