Je ne demande pas comment utiliser l'instruction begin..rescue dans Ruby. Au contraire, je demande comment vous pouvez comprendre ce qui vaut la peine de s'inquiéter. Je sais que certaines personnes inconditionnelles passent probablement par la documentation/code pour trouver chaque erreur possible, et ont un code qui gère tous les cas avec élégance. Mais cela pourrait aller trop loin si vous n'écrivez pas quelque chose de "critique".Comment rendre vos scripts Ruby robustes avec la gestion correcte des exceptions
Alors, comment savez-vous les erreurs à surveiller? En général, je lance simplement mon code, et s'il s'arrête à cause d'une erreur, j'ajoute une instruction begin..rescue. Je suis sûr qu'il doit y avoir un meilleur moyen cependant. Je viens d'exécuter un script pour importer des données dans une base de données pour certains fichiers, et il s'est arrêté après une heure (beaucoup de fichiers, ne demandent pas) en raison d'une erreur que je ne pouvais pas savoir allait se produire. Assez agaçant, et je suis sûr que c'est de ma faute si je n'écris pas de code plus robuste. Comment je fais ça?
Le laisser flotter n'a pas de sens pour moi parce que je n'écris pas une bibliothèque. Les erreurs ont déjà flotté dans mon cas, à moins que je ne comprenne mal comment la gestion des exceptions fonctionne dans Ruby (tout à fait possible). Le problème est que les erreurs arrêtent les scripts quand je préfère qu'ils continuent à fonctionner et je peux simplement vérifier les erreurs dans un fichier journal plus tard ou quelque chose. – ehsanul
@ehsanul - il est logique de continuer à courir si vous savez que vous pouvez continuer à courir. Avaler toutes les erreurs est un comportement très dangereux, surtout si l'exception est révélatrice d'un problème critique qui pourrait endommager le système si vous continuez. Mais quand vous savez que le problème n'est que temporaire et qu'il ne s'applique qu'à une tâche isolée, c'est différent ... mais il est extrêmement circonstanciel, et chaque exception individuelle doit être traitée individuellement: / – Matchu