La gestion des exceptions est une technique cruciale en C qui vous permet de gérer efficacement les erreurs et les situations inhabituelles. Comprendre comment lancer, essayer et intercepter des exceptions est essentiel pour écrire du code robuste et fiable.
Un scénario courant dans lequel les exceptions sont utiles est lorsque vous souhaitez gérer des entrées ou des conditions non valides qui ne devraient pas se produire lors de l'exécution normale d'un programme. . Par exemple, considérons une fonction compare(int a, int b) qui compare deux entiers.
Pour gérer le cas où a ou b est négatif, nous pouvons modifier la définition de la fonction de comparaison comme suit :
#include <stdexcept> int compare(int a, int b) { if (a < 0 || b < 0) { throw std::invalid_argument("received negative value"); } }
Dans cet exemple, nous utilisons l'instruction throw pour déclencher une exception si l'un des paramètres est négatif. Le std::invalid_argument est un objet d'exception intégré qui correspond à un argument invalide transmis à une fonction.
Pour gérer l'exception levée par la fonction de comparaison, nous pouvons utiliser un bloc try-catch :
try { compare(-1, 3); } catch (const std::invalid_argument& e) { // Handle the exception here... }
Dans le bloc try, nous essayons d'exécuter la fonction de comparaison avec des entrées potentiellement invalides. Si une exception est levée, le bloc catch l'attrape, nous donnant une référence à l'objet exception e. Nous pouvons utiliser cet objet pour déterminer la cause de l'exception et prendre les mesures appropriées.
De plus, C offre une flexibilité dans la gestion des exceptions. Vous pouvez lancer par valeur et attraper par référence, comme démontré dans l'exemple ci-dessus. Vous pouvez également relancer des exceptions ou intercepter des exceptions quel que soit leur type à l'aide de catch(...). Ces fonctionnalités vous permettent de gérer les scénarios d'exception de manière personnalisée et efficace.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!