Wir können nicht erwarten, dass ein Benutzer immer die richtigen Daten eingibt. Wenn die falsche oder unerwartete Eingabe jedoch nicht korrekt verarbeitet wird, könnte der gesamte Code abstürzen oder in eine Endlosschleife geraten. Hierbei handelt es sich um ein Problem, das während der Ausführung des Programms aufgrund unerwarteter Bedingungen oder Eingaben auftritt. Beispielsweise ist das Ergebnis unendlich, wenn eine Zahl durch Null geteilt wird. Die Ausnahmebehandlung ist die Möglichkeit, dem Programm mitzuteilen, dass es in bestimmten Situationen mit dem nächsten Codeblock fortfahren oder das definierte Ergebnis liefern soll.
Die Ausnahmebehandlung kann mit den folgenden vier Schlüsselwörtern erfolgen.
Sie können der Software oder Ihrem Code viel Ärger ersparen, indem Sie den Ausnahmehandler definieren. Es empfiehlt sich, einen Ausnahmehandler überall dort zu definieren, wo eine mögliche Ausnahme vorliegt.
Syntax:
Immer wenn die Ausnahme ausgelöst wird, fängt eine deklarierte Methode die Ausnahme mit Hilfe des Schlüsselworts „try“ und „catch“ ab. Wir müssen diese Kombination in den Teil des Codes einfügen, es wird eine Ausnahme erwartet. Diese Codes werden geschützter Code genannt. Sie können auch mehr als ein Catch-Schlüsselwort für ein Try-Schlüsselwort definieren. Am Ende des Inhalts wird der letzte Teil des Codes ausgeführt, und zwar unabhängig davon, ob eine Ausnahme ausgelöst wird oder nicht.
Code:
try { //Define the statement that could cause an exception. } Catch(ExceptionName secondException) { //error handling code } Finally { //define the statement that will be executed }
Es gibt viele vordefinierte Klassen zur Behandlung der Ausnahme. Der Try-Block deckt den Teil des Codes ab, der möglicherweise eine Ausnahme auslöst, und Catch bestätigt, was zu tun ist, wenn eine Ausnahme abgefangen wird. Der letzte Teil des Blocks definiert, was getan werden muss, unabhängig davon, ob die Ausnahme erkannt wird oder nicht, und der Wurfteil zeigt die Meldung an, falls eine festgelegt wurde.
In C# stehen viele Klassen zur Verfügung, durch die Ausnahmen dargestellt werden können. Alle Klassen werden von der Hauptklasse namens System abgeleitet. Ausnahme. Es gibt einige Klassen, die auch von System.ApplicationException und System.SystemException abgeleitet sind.
Ausnahmen werden vom System abgeleitet. Ausnahmeklasse. Hier ist die Liste der allgemeinen C#-Ausnahmeklassen.
|
Beschreibung | ||||||||||||
System.DivideByZeroException | behandelt den Fehler beim Versuch, eine Zahl durch Null zu dividieren. | ||||||||||||
System.NullReferenceException | behandelt den Fehler, wenn auf ein Objekt verwiesen wird, das nicht existiert. | ||||||||||||
System.InvalidCastException | behandelt den Fehler beim Versuch einer ungültigen Umwandlung. | ||||||||||||
System.IO.IOException | Alle Eingabe-Ausgabe-Fehler werden behandelt. | ||||||||||||
System.FieldAccessException | Beim Versuch, auf eine nicht autorisierte Klasse zuzugreifen |
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.
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:
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:
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:
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:
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:
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.
Das obige ist der detaillierte Inhalt vonAusnahmebehandlung in C#. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!