Heim  >  Artikel  >  Backend-Entwicklung  >  Ausnahmebehandlung in C#

Ausnahmebehandlung in C#

WBOY
WBOYOriginal
2024-09-03 15:20:23957Durchsuche

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.

Schlüsselwörter der Ausnahmebehandlung in C#

Die Ausnahmebehandlung kann mit den folgenden vier Schlüsselwörtern erfolgen.

  1. Try: Der Try-Block definiert den Typ der zu behandelnden Ausnahme. Hier würde die Ausnahme abgefangen werden. Es wird immer mit einem Catch-Block gepaart.
  2. Catch: Sobald der Try-Block den Typ definiert und während der Ausführung eine Ausnahme erhalten hat, bestätigt der Catch-Block den Typ des zu verwendenden Ausnahmehandlers. Dieser Block bestimmt auch, wo die Ausnahme behandelt werden soll. Wie das Schlüsselwort andeutet, ist es so, als würde man eine Ausnahme abfangen.
  3. Abschließend: Dieser Block enthält einige Anweisungen. Unabhängig davon, welche Ausnahme ausgelöst wird, werden die im letzten Block definierten Anweisungen immer ausgeführt.
  4. Throw: Wenn eine Ausnahme abgefangen wird, wird das Schlüsselwort „throw“ verwendet, um die abgefangene Ausnahme anzuzeigen.

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
}

Wie funktioniert die Ausnahmebehandlung in C#?

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.

Ausnahmeklassen in C#

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.

Beispiele für Ausnahmeklassen in C#

Ausnahmen werden vom System abgeleitet. Ausnahmeklasse. Hier ist die Liste der allgemeinen C#-Ausnahmeklassen.

                   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
                   Ausnahme
                   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

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:
Ausnahmebehandlung in 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:
Ausnahmebehandlung in 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:
Ausnahmebehandlung in 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:
Ausnahmebehandlung in 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:
Ausnahmebehandlung in 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.

Das obige ist der detaillierte Inhalt vonAusnahmebehandlung in C#. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Entity Framework C#Nächster Artikel:Entity Framework C#