C#:
Gestion des erreurs
Comment faire :
Commençons par un bloc try-catch. C’est comme installer un filet de sécurité sous un funambule. S’il glisse, il ne chute pas - il est attrapé.
using System;
class ExempleGestionErreurs {
static void Main() {
try {
int[] nombres = {1, 2, 3};
Console.WriteLine(nombres[5]); // Oups, l'indice dépasse les limites du tableau !
} catch (IndexOutOfRangeException e) {
Console.WriteLine("Erreur interceptée : " + e.Message);
}
}
}
Exemple de sortie lorsque les choses tournent mal :
Erreur interceptée : L'indice était hors des limites du tableau.
Maintenant, nous ajoutons un bloc finally - c’est ce qui se passe quoi qu’il arrive, comme payer ses impôts.
try {
// Code potentiellement problématique ici
} catch (SomeSpecificException e) {
// Traiter cette erreur spécifique ici
} finally {
// Ce code s'exécute quoi qu'il arrive
Console.WriteLine("Ceci s'exécute toujours.");
}
Exploration Approfondie
La gestion des erreurs existe en C# depuis sa création. Au fil du temps, elle a évolué. Dans le passé, les programmeurs se fiaient à des codes de retour ou des indicateurs globaux pour signaler des problèmes - maladroits et source d’erreurs.
C# utilise des exceptions, une approche plus moderne. Une exception est lancée lorsque l’inattendu se produit, tout comme on lance un drapeau sur le terrain en football. La gestion structurée des exceptions avec des blocs try, catch et finally rend la gestion de ces moments plus claire et plus propre que l’ancienne vérification des erreurs.
Des alternatives ? Bien sûr. Il y a le UnhandledExceptionEventHandler
pour les exceptions qui passent entre les mailles du filet. Ou dans le code asynchrone, la gestion des erreurs prend un tournant avec des objets Task
qui portent leur propre fardeau d’exceptions.
Les détails d’implémentation – semblables aux petits caractères – comptent. Les exceptions peuvent coûter cher en réduisant les performances si elles sont lancées à tout va. Ainsi, nous les utilisons pour des cas exceptionnels, et non pour le contrôle logique quotidien.