Dans la programmation, les erreurs sont inévitables. Il est important de comprendre les différents types d’erreurs et de savoir comment les gérer de manière appropriée. La gestion des erreurs en C# repose sur la gestion des exceptions, qui permet de capturer et de traiter les erreurs de manière contrôlée.
Erreurs de compilation
;
à la fin d’une instruction.int nombre = "texte";
Erreurs d’exécution
int resultat = 10 / 0;
try
, catch
, finally
C# utilise un mécanisme appelé gestion des exceptions pour traiter les erreurs d’exécution. Ce mécanisme repose sur trois blocs principaux : try
, catch
, et finally
.
try
: Ce bloc contient le code qui pourrait potentiellement générer une erreur.catch
: Si une erreur survient dans le bloc try
, le bloc catch
est exécuté pour capturer et traiter l’erreur.finally
: Ce bloc est toujours exécuté, qu’une exception soit levée ou non. Il est généralement utilisé pour nettoyer les ressources, comme fermer un fichier ou libérer de la mémoire.try
{
// Code qui pourrait générer une erreur
}
catch (Exception ex)
{
// Code pour gérer l'erreur
Console.WriteLine($"Erreur : {ex.Message}");
}
finally
{
// Code qui s'exécute toujours
}
class GestionErreurs
{
public void Division()
{
try
{
int numerateur = 10;
int denominateur = 0;
int resultat = numerateur / denominateur; // Erreur ici (division par zéro)
}
catch (DivideByZeroException ex)
{
Console.WriteLine("Erreur : Division par zéro !");
}
finally
{
Console.WriteLine("Bloc finally : Cette partie du code s'exécute toujours.");
}
}
}
// Utilisation
GestionErreurs gestion = new GestionErreurs();
gestion.Division();
Erreur : Division par zéro !
Bloc finally : Cette partie du code s'exécute toujours.
Exemple :
class GestionNullReference
{
public void AccederObjet()
{
try
{
string texte = null;
Console.WriteLine(texte.Length); // Erreur ici, car texte est null
}
catch (NullReferenceException ex)
{
Console.WriteLine("Erreur : L'objet n'a pas été initialisé.");
}
finally
{
Console.WriteLine("Bloc finally : Nettoyage des ressources.");
}
}
}
// Utilisation
GestionNullReference gestion = new GestionNullReference();
gestion.AccederObjet();
Sortie :
Erreur : L'objet n'a pas été initialisé.
Bloc finally : Nettoyage des ressources.
Exemple :
class GestionIndexOutOfRange
{
public void AccederTableau()
{
try
{
int[] tableau = { 1, 2, 3 };
Console.WriteLine(tableau[5]); // Erreur ici, index hors limites
}
catch (IndexOutOfRangeException ex)
{
Console.WriteLine("Erreur : Index en dehors des limites du tableau.");
}
finally
{
Console.WriteLine("Bloc finally : Fin de l'accès au tableau.");
}
}
}
// Utilisation
GestionIndexOutOfRange gestion = new GestionIndexOutOfRange();
gestion.AccederTableau();
Sortie :
Erreur : Index en dehors des limites du tableau.
Bloc finally : Fin de l'accès au tableau.
Exemple :
using System;
using System.IO;
class GestionFichier
{
public void LireFichier()
{
try
{
string contenu = File.ReadAllText("fichier_inexistant.txt"); // Erreur ici
}
catch (FileNotFoundException ex)
{
Console.WriteLine("Erreur : Le fichier n'a pas été trouvé.");
}
finally
{
Console.WriteLine("Bloc finally : Fin de la tentative de lecture du fichier.");
}
}
}
// Utilisation
GestionFichier gestion = new GestionFichier();
gestion.LireFichier();
Sortie :
Erreur : Le fichier n'a pas été trouvé.
Bloc finally : Fin de la tentative de lecture du fichier.
try
et catch
, il est possible de capturer les erreurs et de réagir de manière appropriée sans que le programme ne plante complètement.finally
assure que les ressources comme les fichiers ouverts, la mémoire, ou les connexions réseau sont toujours libérées, même en cas d’erreur.La gestion des erreurs et des exceptions en C# est essentielle pour écrire des programmes fiables et robustes. Comprendre les différents types d’erreurs et utiliser correctement les blocs try
, catch
, et finally
permet de gérer les erreurs de manière contrôlée, d’éviter des plantages inattendus, et de garantir un bon nettoyage des ressources.
Laisser un commentaire :