Maison  >  Article  >  développement back-end  >  Types d'exceptions en C#

Types d'exceptions en C#

PHPz
PHPzoriginal
2024-09-03 15:20:36811parcourir

Le problème qui se pose lors de l'exécution du programme est une exception et ces exceptions sont les réponses à des circonstances exceptionnelles lors de l'exécution d'un programme comme l'exception levée chaque fois que l'on essaie de diviser par zéro et que le contrôle est transféré d'une partie du programme à une autre partie du programme en passant par les exceptions et la gestion des exceptions est gérée avec quatre mots-clés en C#, ils sont try, catch, enfin et throw block.

Types d'exceptions en C# avec exemples

Il existe plusieurs types d’exceptions en C#. Ce sont :

1. System.OutOfMemoryException

Les erreurs générées en raison d'une mémoire libre insuffisante sont gérées par cette exception. Considérez l'exemple de programme ci-dessous pour démontrer System. OutOfMemoryException.

Exemple :

//a class called check is defined
public class check
{
//main method is called
public static void Main()
{
// a string variable is created and tried to store 2.1 billion characters and this causes an out of memory exception
string val = new string('r', int.MaxValue);
}
}

Sortie :

Types d'exceptions en C#

Sortie :

Dans le programme ci-dessus, une classe appelée check est définie. Ensuite, la méthode principale est appelée. une variable de chaîne est créée et tente de stocker 2,1 milliards de caractères, ce qui provoque une exception de mémoire insuffisante.

2. System.NullReferenceException

Les erreurs générées par le référencement d'un objet nul sont gérées par cette exception. Considérez l'exemple de programme ci-dessous pour démontrer System. NullReferenceException

Exemple :

using System;
//a class called check is defined
class check
{
//main method is called
static void Main()
{
//a string variable is defined, and it is referencing to null
string value = null;
//the length of the value referencing to null is checked if it is equal to zero causing an exception
if (value.Length == 0)
{
Console.WriteLine(value);
}
}
}

Sortie :

Types d'exceptions en C#

Dans le programme ci-dessus, une classe appelée check est définie. Ensuite, la méthode principale est appelée. Ensuite, une variable chaîne est définie et elle fait référence à null. Ensuite, la longueur de la valeur faisant référence à null est vérifiée si elle est égale à zéro, provoquant une exception.

3. System.InvalidCastException

Les erreurs générées lors du transtypage sont gérées par cette exception. Considérez l'exemple de programme ci-dessous pour démontrer System. InvalidCastException.

Exemple :

using System.IO;
using System.Text;
//a class called check is defined
class check
{
//main method is called
static void Main()
{
// an instance of the string builder class is created which is then assigned to a new object through implicit casting and then casting is tried explicitly to convert the instance of stringbuilder class to streamreader class
StringBuilder ref1 = new StringBuilder();
object ref2 = ref1;
StreamReader ref3 = (StreamReader)ref2;
}
}

Sortie :

Types d'exceptions en C#

Dans le programme ci-dessus, une classe appelée check est définie. Ensuite, la méthode principale est appelée. Ensuite, une instance de la classe string builder est créée qui est ensuite affectée à un nouvel objet via un casting implicite, puis le casting est tenté explicitement pour convertir l'instance de la classe stringbuilder en classe streamreader, ce qui provoque une exception.

4. System.ArrayTypeMismatchException

Les erreurs générées en cas de non-concordance de type avec le type de tableau sont gérées par cette exception. Considérez l'exemple de programme ci-dessous pour démontrer System. ArrayTypeMismatchException.

Exemple :

//a class called check is defined
class check
{
//main method is called
static void Main()
{
// a string is defined and assigned the values which is then assigned to object class array and then an integer is tried to put in the same array which causes an exception
string[] arr1 = { "Welcome", "to", "CSharp" };
object[] arr2 = arr1;
arr2[0] = 8;
}
}

Sortie :

Types d'exceptions en C#

Dans le programme ci-dessus, une classe appelée check est définie. Ensuite, la méthode principale est définie. Ensuite, une chaîne est définie et affectée aux valeurs qui sont ensuite attribuées au tableau de classes d'objets, puis un entier est essayé de mettre dans le même tableau, ce qui provoque une exception.

5. System.IndexOutOfRangeException

Les erreurs générées lorsqu'une méthode fait référence à un tableau hors plage sont gérées par cette exception. Considérez l'exemple de programme ci-dessous pour démontrer System. IndexOutOfRangeException.

Exemple :

//a class called check is defined
class check
{
//main method is called
static void Main()
{
// an array is defined to store 100 integers but then an integer is tried to be stores at a position outside of the size of the array which causes an exception
int[] arr = new int[10];
arr[0] = 10;
arr[10] = 20;
arr[20] = 30;
}
}

Sortie :

Types d'exceptions en C#

Dans le programme ci-dessus, une classe appelée check est définie. Ensuite, la méthode principale est appelée. Ensuite, un tableau est défini pour stocker 100 entiers, mais un entier est ensuite tenté d'être stocké à une position en dehors de la taille du tableau, ce qui provoque une exception.

6. System.DivideByZeroException

Les erreurs générées lorsqu'un dividende est divisé par zéro sont gérées par cette exception. Considérez l'exemple de programme ci-dessous pour démontrer System. DivideByZeroException.

Exemple :

using System;
//a class called check is defined
class check
{
//main method is called
static void Main()
{
//an integer variable res is defined which is tried to divide by zero which causes an exception
int res = 10 / int.Parse("0");
Console.WriteLine(res);
}
}

Sortie :

Types d'exceptions en C#

Dans le programme ci-dessus, une classe appelée check est définie. Ensuite, la méthode principale est appelée. Ensuite, une variable entière res est définie que l'on tente de diviser par zéro, ce qui provoque une exception.

7. System.StackOverflowException

Les erreurs générées par le débordement de pile sont gérées par cette exception. Considérez l'exemple de programme ci-dessous pour démontrer System. StackOverflowException.

Exemple :

using System;
//a class called check is defined
public class check
{
// a method called recurse is defined which takes a value as parameter and increases its value by one
static void Recurse(int val)
{
// since we have written a recursive loop and 0 is passed as a parameter, it ends in an infinite loop causing exception
Console.WriteLine(val);
Recurse(++val);
}
//main method is called
public static void Main()
{
//The recurse method is called to start the infinite recursion
Recurse(0);
}
} <strong>Output:</strong>

Types d'exceptions en C#

In the above program, a class called check is defined. Then a method called recurse is defined which takes a value as a parameter and increases its value by one. Then the main method is called in which the infinite loop for recursion begins by passing zero as a parameter. Then since we have written a recursive loop and 0 is passed as a parameter, it ends in an infinite loop causing an exception.

8. System.IO.IOException

The errors that are generated by input, the output is handled by this exception. Consider the below example program to demonstrate System. IO. IOException.

Example:

using System;
using System.IO;
//a class called check is defined
class check
{
//main methos is called
static void Main()
{
try
{
//a file is tried to open which do not exist and causes an exception
File.Open("D:\\ex.txt", FileMode.Open);
}
catch (IOException)
{
Console.WriteLine("Inputoutput Exception is handled");
}
}
}

Output:

Types d'exceptions en C#

In the above program, a class called check is defined. Then the main method is called. Then a file is tried to open which does not exist and causes an exception.

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:Gestion des exceptions en C#Article suivant:Gestion des exceptions en C#