Maison  >  Article  >  développement back-end  >  Gestion des exceptions en C#

Gestion des exceptions en C#

WBOY
WBOYoriginal
2024-09-03 15:20:23958parcourir

Nous ne pouvons pas nous attendre à ce qu'un utilisateur saisisse les informations correctes à tout moment. Cependant, si une entrée incorrecte ou inattendue n'est pas gérée correctement, l'ensemble du code pourrait planter ou suivre une boucle sans fin. Il s'agit d'un problème qui commence lors de l'exécution du programme en raison de conditions ou d'entrées inattendues. Par exemple, le résultat est infini lorsqu’un nombre est divisé par zéro. La gestion des exceptions est le moyen d'indiquer au programme de passer au bloc de code suivant ou de fournir le résultat défini dans certaines situations.

Mots clés de la gestion des exceptions en C#

La gestion des exceptions peut être effectuée avec moins de quatre mots-clés.

  1. Try : Le bloc try définit le type d'exception à gérer. C'est là que l'exception serait interceptée. Il sera toujours associé à un bloc catch.
  2. Catch : Une fois que le bloc try a défini le type et obtenu une exception lors de l'exécution, le bloc catch confirmera le type de gestionnaire d'exceptions à utiliser. Ce bloc déterminera également où l'exception doit être gérée. Comme l'indique le mot-clé, c'est comme attraper l'exception.
  3. Enfin : Ce bloc contient un ensemble d'instructions. Quelle que soit l'exception levée, les instructions définies dans le bloc final seront toujours exécutées.
  4. Throw : Lorsqu'une exception est interceptée, le mot-clé throw est utilisé pour afficher l'exception interceptée.

Vous pouvez éviter bien des tracas au logiciel ou à votre code en définissant le gestionnaire d'exceptions. C'est une bonne pratique de définir un gestionnaire d'exceptions partout où il existe une exception possible.

Syntaxe :

Chaque fois qu'une exception est levée, une méthode déclarée intercepte l'exception à l'aide du mot-clé try and catch. Nous devons placer cette combinaison du côté du code, une exception est attendue. Ces codes sont appelés code protégé. Vous pouvez également définir plusieurs mots-clés catch pour un mot-clé try. À la fin du contenu, la dernière partie du code sera exécutée et cela sera exécuté qu'une exception soit levée ou non.

Code :

try
{
//Define the statement that could cause an exception.
}
Catch(ExceptionName secondException)
{
//error handling code
}
Finally
{
//define the statement that will be executed
}

Comment fonctionne la gestion des exceptions en C# ?

Il existe de nombreuses classes prédéfinies pour gérer l'exception. Le bloc try couvre la partie du code qui pourrait lever une exception et catch confirme quoi faire lorsqu'une exception est interceptée. La dernière partie du bloc définit ce qui doit être fait, que l'exception soit détectée ou non et la partie throw affiche le message le cas échéant.

Classes d'exceptions en C#

Il existe de nombreuses classes disponibles en C# grâce auxquelles les exceptions peuvent être représentées. Toutes les classes sont dérivées de la classe principale appelée System. Exception. Il existe peu de classes également dérivées de System.ApplicationException et System.SystemException.

Exemples de classes d'exception en C#

Les exceptions sont dérivées du système. Classe d'exception. Voici la liste des classes d'exceptions courantes C#.

                   Exception                    Description
System.DivideByZeroException handles the error when trying to divide a number by zero.
System.NullReferenceException handles the error when referring to an object which does not exist.
System.InvalidCastException handles the error when trying invalid casting.
System.IO.IOException All input-output error is handled.
System.FieldAccessException When trying to access unauthorized class
                   Exception
                   Description
System.DivideByZeroException gère ​​l'erreur lorsque vous essayez de diviser un nombre par zéro.
System.NullReferenceException gère ​​l'erreur lors de la référence à un objet qui n'existe pas.
System.InvalidCastException gère ​​l'erreur lors d'une tentative de diffusion non valide.
System.IO.IOException Toutes les erreurs d'entrée-sortie sont gérées.
System.FieldAccessException Lorsque vous essayez d'accéder à une classe non autorisée

1. C# try/catch

Exception handling is done by try and catches block in C#. The try block in C# is used to place the code that may throw an exception. The exception is handled by the catch block.

C# example without try/catch

Code:

using System;
public class exceptionhandling
{
public static void Main(string[] args)
{
int a = 10;
int b = 0;
int x = a/b;    //we are trying to divide the number with zero
Console.WriteLine("other part of the code");
}
}

Output:
Gestion des exceptions en C#

C# try/catch example

Code

using System;
public class ExExample
{
public static void Main(string[] args)
{
try
{
int a = 10;
int b = 0;
int x = a / b;
}
catch (Exception e) { Console.WriteLine(e); }
Console.WriteLine("Rest of the code");
}
}

Output:
Gestion des exceptions en C#

Use of Exception Classes in C# finally

It will show you the message regardless the exception is caught.

Code

using System;
public class Exceptionhandling
{
public static void Main(string[] args)
{
try
{
int x = 5;
int y= 0;
int z = x / y;
}
catch (Exception obj) { Console.WriteLine(obj); }
finally { Console.WriteLine("Time to execute finally block"); }
Console.WriteLine("Other part of the code");
}
}

Output:
Gestion des exceptions en C#

1. C# finally example if Exception is not handled

Code

using System;
public class ExceptionHandling
{
public static void Main(string[] args)
{
try
{
int p = 6;
int q = 0;
int r= p/q;
}
catch (NullReferenceException nullObject) { Console.WriteLine(nullObject); }
finally { Console.WriteLine("Exception not handled. Now Finally section will be executed"); }
Console.WriteLine("Other part of the code");
}
}

Output:
Gestion des exceptions en C#

2. C# user-defined Exception

The not only system defined, but we can also set our own exception. However, we need to inherit the code in order to get this done.

Code

using System;
public class userdefinedInvalidAge : Exception
{
public userdefinedInvalidAge (String errorMessage)
: base(errorMessage)
{
}
}
public class TestUserDefinedException
{
static void validateAge(int age)
{
if (age < 18)
{
throw new userdefinedInvalidAge("Sorry, Age must be greater than 18");
}
}
public static void Main(string[] args)
{
try
{
validateAge(12);
}
catch (userdefinedInvalidAge e) { Console.WriteLine(e); }
Console.WriteLine("Rest of the code");
}
}

Output:
Gestion des exceptions en C#

Conclusion

At any place you think it might generate an error because of anything, exception handler should be used. It is essential that you use a catch statement and start from generic to a specific exception. Your entire software or code is at risk without proper exception handler.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Entité Framework C#Article suivant:Entité Framework C#