Erreurs et exceptions : Try, Catch, finally
Gestion des erreurs et des exceptions
Il est important de mettre en place une bonne gestion des erreurs et des exceptions dans vos applications à plusieurs niveaux. Le premier pour éviter que l’utilisateur soit face à un message d’erreur avec un bon de code qui s’affiche ou un message incompréhensible. Le second pour remonter les informations chez vous et effectuer les correctifs rapidement. Enfin pour gérer les cas particuliers et maîtriser le code que vous pouvez ouvrir sous forme de framework, api…
Dès que votre application programmée en C# rencontre une anomalie, quelle soit gérée ou non, le framework .net remonte une exception. Une exception va interrompre le flux du programme en cours, si vous ne capturez pas celle-ci, elle va remonter au plus haut niveau et arrêter l’application.
Exemple d’exception :
int totalPoint = 1200 ; int nombreEpreuve = 0 ; real moyenne = totalPoint / nombreEpreuve ;
Une exception sera levée, car il est impossible de diviser un nombre par 0.
Pour gérer le cas ci-dessous, il faut mettre en place une gestion d’exception. C# met à disposition les mots clés try, catch et finally permettant dans un programme de détecter les exceptions, de les capturer et de gérer la situation.
Try et Catch
Pour capturer une exception, il faut encadrer votre code d’un bloc try catch.
Si une exception est levée dans le bloc try, le flux de programmation ira directement dans la partie catch.
Exemple dans le cas d’une division par zéro :
class ExempleTryCatch { static void Main() { int x=0, y=0; try { x = 10 / y; } catch (System.DivideByZeroException) { System.Console.WriteLine("Il est impossible de diviser un nombre par zéro."); } } }
Blocs finally
Si vous souhaitez que du code soit exécuté qu’une exception ou non soit levée, il faut utiliser le bloc finally pour s’en assurer.
Exemple il faut toujours fermer une connexion à une base de données.
try { // Ouverture de la connexion à la base de données // Exécution d’une instruction en base de données } catch (Exception ex) { // Gestion de l’exception } finally { // Fermeture de la base de données }