La gestion des erreurs
Les erreurs font partie de la réalité du développement logiciel, c’est pourquoi Rust dispose de nombreuses fonctionnalités pour gérer les situations où quelque chose se passe mal. Dans de nombreux cas, Rust vous oblige à reconnaître la possibilité d’une erreur et à prendre des mesures avant que votre code ne puisse compiler. Cette exigence rend votre programme plus robuste en garantissant que vous découvrirez les erreurs et les traiterez correctement avant de déployer votre code en production !
Rust classe les erreurs en deux grandes catégories : les erreurs récupérables et les erreurs irrécupérables. Pour une erreur récupérable, comme une erreur de type fichier introuvable, nous voulons très probablement simplement signaler le problème à l’utilisateur et réessayer l’opération. Les erreurs irrécupérables sont toujours des symptômes de bogues, comme tenter d’accéder à un emplacement au-delà de la fin d’un tableau, et dans ce cas nous voulons arrêter immédiatement le programme.
La plupart des langages ne font pas la distinction entre ces deux types d’erreurs et les gèrent de la même manière, en utilisant des mécanismes tels que les exceptions. Rust ne possède pas d’exceptions. À la place, il dispose du type Result<T, E> pour les erreurs récupérables et de la macro panic! qui arrête l’exécution lorsque le programme rencontre une erreur irrécupérable. Ce chapitre traite d’abord de l’appel à panic!, puis aborde le renvoi de valeurs Result<T, E>. De plus, nous examinerons les considérations à prendre en compte pour décider s’il faut tenter de récupérer d’une erreur ou arrêter l’exécution.