Das Problem, das während der Ausführung des Programms auftritt, ist eine Ausnahme und diese Ausnahmen sind die Reaktionen auf Umstände, die während der Ausführung eines Programms außergewöhnlich sind, wie die Ausnahme, die immer dann ausgelöst wird, wenn wir versuchen, durch Null zu dividieren und die Kontrolle übertragen wird von einem Teil des Programms zu einem anderen Teil des Programms durch Ausnahmen und die Behandlung von Ausnahmen wird in C# mit vier Schlüsselwörtern verwaltet, nämlich try, Catch, Final und Throw Blocks.
In C# gibt es verschiedene Arten von Ausnahmen. Sie sind:
Die Fehler, die aufgrund unzureichenden freien Speichers generiert werden, werden von dieser Ausnahme behandelt. Betrachten Sie das folgende Beispielprogramm, um System zu demonstrieren. OutOfMemoryException.
Beispiel:
//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); } }
Ausgabe:
Ausgabe:
Im obigen Programm ist eine Klasse namens check definiert. Dann wird die Hauptmethode aufgerufen. Es wird eine Zeichenfolgenvariable erstellt und versucht, 2,1 Milliarden Zeichen zu speichern, was zu einer Ausnahme wegen unzureichendem Speicher führt.
Die Fehler, die durch die Referenzierung eines Nullobjekts generiert werden, werden von dieser Ausnahme behandelt. Betrachten Sie das folgende Beispielprogramm, um System zu demonstrieren. NullReferenceException
Beispiel:
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); } } }
Ausgabe:
Im obigen Programm ist eine Klasse namens check definiert. Dann wird die Hauptmethode aufgerufen. Dann wird eine String-Variable definiert, die auf Null verweist. Dann wird die Länge des auf Null verweisenden Werts überprüft, wenn dieser gleich Null ist, was zu einer Ausnahme führt.
Die Fehler, die während der Typumwandlung generiert werden, werden von dieser Ausnahme behandelt. Betrachten Sie das folgende Beispielprogramm, um System zu demonstrieren. InvalidCastException.
Beispiel:
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; } }
Ausgabe:
Im obigen Programm ist eine Klasse namens check definiert. Dann wird die Hauptmethode aufgerufen. Dann wird eine Instanz der String-Builder-Klasse erstellt, die dann durch implizite Umwandlung einem neuen Objekt zugewiesen wird. Anschließend wird explizit versucht, die Instanz der Stringbuilder-Klasse in die Streamreader-Klasse umzuwandeln, was eine Ausnahme verursacht.
Die Fehler, die generiert werden, wenn der Typ nicht mit dem Array-Typ übereinstimmt, werden von dieser Ausnahme behandelt. Betrachten Sie das folgende Beispielprogramm, um System zu demonstrieren. ArrayTypeMismatchException.
Beispiel:
//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; } }
Ausgabe:
Im obigen Programm ist eine Klasse namens check definiert. Anschließend wird die Hauptmethode definiert. Dann wird eine Zeichenfolge definiert und den Werten zugewiesen, die dann dem Objektklassen-Array zugewiesen werden. Anschließend wird versucht, eine Ganzzahl in dasselbe Array einzufügen, was eine Ausnahme verursacht.
Die Fehler, die generiert werden, wenn eine Methode auf ein Array verweist, das außerhalb des gültigen Bereichs liegt, werden von dieser Ausnahme behandelt. Betrachten Sie das folgende Beispielprogramm, um System zu demonstrieren. IndexOutOfRangeException.
Beispiel:
//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; } }
Ausgabe:
Im obigen Programm ist eine Klasse namens check definiert. Dann wird die Hauptmethode aufgerufen. Dann wird ein Array zum Speichern von 100 Ganzzahlen definiert, aber dann wird versucht, eine Ganzzahl an einer Position außerhalb der Größe des Arrays zu speichern, was eine Ausnahme verursacht.
Die Fehler, die generiert werden, wenn eine Dividende durch Null geteilt wird, werden von dieser Ausnahme behandelt. Betrachten Sie das folgende Beispielprogramm, um System zu demonstrieren. DivideByZeroException.
Beispiel:
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); } }
Ausgabe:
Im obigen Programm ist eine Klasse namens check definiert. Dann wird die Hauptmethode aufgerufen. Dann wird eine ganzzahlige Variable res definiert, die versucht wird, durch Null zu dividieren, was eine Ausnahme verursacht.
Die Fehler, die durch einen Stapelüberlauf entstehen, werden von dieser Ausnahme behandelt. Betrachten Sie das folgende Beispielprogramm, um System zu demonstrieren. StackOverflowException.
Beispiel:
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>
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.
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:
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.
Das obige ist der detaillierte Inhalt vonArten von Ausnahmen in C#. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!