Implémentation d'une première approche de gestion des erreurs #52

Merged
florian_briand merged 5 commits from feat/handle_errors_rustly into main 2024-08-22 20:56:12 +02:00

Détails

Implémente (en partie) les "bonnes pratiques" de gestion des erreurs Rust décrites dans le ticket #34

Cette PR se concentre beaucoup sur la gestion des erreurs "internes" et peu sur la manière dont on les expose à l'extérieur (API) ou les trace (dans des logs ou sur une app de suivi de logs). Une deuxième phase de travail sera nécessaire pour cela.

De même, les choix faits à de nombreux endroits sont très perfectibles :

  • les noms des erreurs et enums ne semblent pas toujours au top
  • certains "fallback" pourraient sans doute être améliorés
  • certaines erreurs pourraient peut-être remonter + de contexte
  • l'usage des librairies d'aide (anyhow et thiserror) ne sont pas uniformes

Cela dit, il est difficile de vraiment affiner ces éléments sans être dans des situations concrètes et réalistes. Je pense donc que c'est à force d'itération, en situation concrète et au fur et à mesure des relectures de code en DA que nous améliorerons ces points.

Pourquoi ?

La gestion des erreurs en Rust est extrêmement puissante, permettant de construire des infrastructures où les "bugs" inattendus sont quasiment inexistants. Pour cela, un certain nombre de bonnes pratiques sont à suivre dans la gestion des retours d'erreurs des fonctions et des programmes à plus haut niveau.

Documentation

CF #34

Closes #34

TODO

  • Ajouter une doc résumant les choix principaux dans docs/errors.md
### Détails Implémente (en partie) les "bonnes pratiques" de gestion des erreurs Rust décrites dans le ticket #34 Cette PR se concentre beaucoup sur la gestion des erreurs "internes" et peu sur la manière dont on les expose à l'extérieur (API) ou les trace (dans des logs ou sur une app de suivi de logs). Une deuxième phase de travail sera nécessaire pour cela. De même, les choix faits à de nombreux endroits sont très perfectibles : - les noms des erreurs et enums ne semblent pas toujours au top - certains "fallback" pourraient sans doute être améliorés - certaines erreurs pourraient peut-être remonter + de contexte - l'usage des librairies d'aide (anyhow et thiserror) ne sont pas uniformes Cela dit, il est difficile de vraiment affiner ces éléments sans être dans des situations concrètes et réalistes. Je pense donc que c'est à force d'itération, en situation concrète et au fur et à mesure des relectures de code en DA que nous améliorerons ces points. ### Pourquoi ? La gestion des erreurs en Rust est extrêmement puissante, permettant de construire des infrastructures où les "bugs" inattendus sont quasiment inexistants. Pour cela, un certain nombre de bonnes pratiques sont à suivre dans la gestion des retours d'erreurs des fonctions et des programmes à plus haut niveau. ### Documentation CF #34 Closes #34 ### TODO - [x] Ajouter une doc résumant les choix principaux dans `docs/errors.md`
florian_briand added 3 commits 2024-08-15 19:44:33 +02:00
florian_briand requested review from kosssi 2024-08-15 19:44:52 +02:00
florian_briand requested review from julien.misiak 2024-08-15 19:44:53 +02:00
florian_briand requested review from theo 2024-08-15 19:44:53 +02:00
florian_briand self-assigned this 2024-08-15 19:45:13 +02:00
Author
Owner

Si ça vous parait pertinent, je peux ajouter quelques tests unitaires, entre autre pour couvrir certaines erreurs (par exemple la présence d'un "null byte" \0 au milieu d'une chaîne à parser)

Si ça vous parait pertinent, je peux ajouter quelques tests unitaires, entre autre pour couvrir certaines erreurs (par exemple la présence d'un "null byte" `\0` au milieu d'une chaîne à parser)
kosssi approved these changes 2024-08-17 15:36:57 +02:00
Dismissed
kosssi left a comment
Owner

Top, merci pour cette DA qui permet d'en savoir plus sur les erreurs dans Rust.

Ajoutons nous une documentation pour expliciter les choix que l'on fait dans cette DA dans un fichier comme docs/errors.md.
Ça permettrait d'expliquer quand nous utilisons plutôt la création d'un enum ou l'utilisation plutôt de .expect(...) de mettre des liens comme ceux-ci :

Top, merci pour cette DA qui permet d'en savoir plus sur les erreurs dans Rust. Ajoutons nous une documentation pour expliciter les choix que l'on fait dans cette DA dans un fichier comme `docs/errors.md`. Ça permettrait d'expliquer quand nous utilisons plutôt la création d'un _enum_ ou l'utilisation plutôt de `.expect(...)` de mettre des liens comme ceux-ci : - https://doc.rust-lang.org/std/result/enum.Result.html#method.map_err - https://docs.rs/thiserror/latest/thiserror/ - https://doc.rust-lang.org/std/io/struct.Error.html
florian_briand added 1 commit 2024-08-17 15:44:29 +02:00
theo approved these changes 2024-08-20 20:59:40 +02:00
Owner

Pour moi c'est good!

Tres cool thiserror.

Pourrqis tu expliquer la difference de quand utiliser thiserror vs anyhow dans le docs/error.md ?

Pour moi c'est good! Tres cool thiserror. Pourrqis tu expliquer la difference de quand utiliser thiserror vs anyhow dans le docs/error.md ?
florian_briand added 1 commit 2024-08-20 22:34:08 +02:00
kosssi approved these changes 2024-08-21 14:42:57 +02:00
kosssi left a comment
Owner

Merci pour la documentation <3

Merci pour la documentation <3
florian_briand merged commit 32009e2f00 into main 2024-08-22 20:56:12 +02:00
florian_briand deleted branch feat/handle_errors_rustly 2024-08-22 20:56:12 +02:00
Sign in to join this conversation.
No reviewers
No Milestone
No project
No Assignees
3 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: P4Pillon/Krys4lide#52
No description provided.