Auslösen einer benutzerdefinierten Ausnahme ohne die Ausnahmeklasse in C#
In diesem Tutorial lernen Sie, eine benutzerdefinierte Ausnahme in C# auszulösen, ohne die Klasse Exception
zu verwenden. Lassen Sie uns zunächst über das Konzept einer Ausnahme sprechen.
Ausnahmen in C#
Ein Programm kann während der Ausführung jederzeit auf eine Ausnahme stoßen. Eine gängige Definition eines Fehlers ist ein Ereignis, das Stress verursacht, aber nicht erwartet wurde.
Aus verschiedenen Gründen sind Ausnahmen innerhalb des Codes einer Anwendung jedoch selbstverständlich. Die Ausnahmebehandlung ist die Logik, die Anwendungen verwenden, um Ausnahmen zu behandeln, wann immer sie explizit auftreten.
Eine Ausnahme kann in einer Vielzahl von Situationen gerechtfertigt sein. Dieser Fehler kann durch verschiedene Dinge verursacht werden, darunter die bekannte NullReferenceException
und ein Datenbankabfrage-Timeout.
Werfen Sie eine benutzerdefinierte Ausnahme ohne die Ausnahmeklasse in C#
Benutzerdefinierte Ausnahmen sind praktisch, wenn Sie einen bestimmten Ausnahmetyp abfangen und verarbeiten möchten. Sie können Ihnen auch dabei helfen, kritische Ausnahmen zu verfolgen.
Ein eindeutiger Ausnahmetyp hilft einem Fehlerüberwachungstool, Anwendungsprobleme und Protokolle zu verfolgen.
Beispiel
Im folgenden Beispiel erstellen wir die Klasse EmployeeNotFoundException
in einer Anwendung, die den Mitarbeiter überprüft. Es wird eine Ausnahme ausgelöst, wenn es nicht im Mitarbeiter-Array vorhanden ist.
Zunächst müssen wir die folgenden Bibliotheken importieren:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
Zuerst erstellen wir eine Klasse MyEmployee
, die die Mitarbeiter-ID und den Mitarbeiternamen enthält.
class MyEmployee {
public int empid { get; set; }
public string empname { get; set; }
}
Jetzt erstellen wir eine Ausnahme vom Typ EmployeeNotFoundException
. Es wird geworfen, wenn ein Mitarbeiter nicht im Mitarbeiter-Array gefunden wird:
class EmployeeNotFoundException : Exception {
public EmployeeNotFoundException(string employeename)
: base(String.Format("Employee Not Found: {0}", employeename)) {}
}
In der Methode Main()
erstellen wir zwei MyEmployee
-Objekte mit dem Namen:
MyEmployee emp1 = null;
MyEmployee emp2 = null;
Wir füllen emp1.empname
und emp2.empname
mit dem Mitarbeiternamen und übergeben die Objekte an die CheckEmployee
-Methode, um zu prüfen, ob der Mitarbeiter in der Liste vorhanden ist oder nicht:
try {
emp1 = new MyEmployee();
emp1.empname = "Muhammad Zeeshan";
CheckEmployee(emp1);
emp2 = new MyEmployee();
emp2.empname = "Hermes Fang";
CheckEmployee(emp2);
}
Existiert der Mitarbeiter nicht im Array, wird eine EmployeeNotFoundException
ausgelöst.
catch (EmployeeNotFoundException ex) {
Console.WriteLine(ex.Message);
}
Zuletzt erstellen wir die Funktion CheckEmployee()
, die den Mitarbeiter mit Hilfe von .contains()
validiert, wie unten gezeigt:
public static void CheckEmployee(MyEmployee e) {
string[] arr = { "Muhammad Zeeshan", "Ali Khan", "Saad Jaan" };
if (!arr.Contains(e.empname))
throw new EmployeeNotFoundException(e.empname);
}
Vollständiger Quellcode:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CustomxceptionbyZeeshan {
class MyEmployee {
public int empid { get; set; }
public string empname { get; set; }
}
class EmployeeNotFoundException : Exception {
public EmployeeNotFoundException(string employeename)
: base(String.Format("Employee Not Found: {0}", employeename)) {}
}
class Program {
static void Main(string[] args) {
MyEmployee emp1 = null;
MyEmployee emp2 = null;
try {
emp1 = new MyEmployee();
emp1.empname = "Muhammad Zeeshan";
CheckEmployee(emp1);
emp2 = new MyEmployee();
emp2.empname = "Hermes Fang";
CheckEmployee(emp2);
} catch (EmployeeNotFoundException ex) {
Console.WriteLine(ex.Message);
}
Console.ReadKey();
}
public static void CheckEmployee(MyEmployee e) {
string[] arr = { "Muhammad Zeeshan", "Ali Khan", "Saad Jaan" };
if (!arr.Contains(e.empname))
throw new EmployeeNotFoundException(e.empname);
}
}
}
Ausgang:
Employee Not Found: Hermes Fang
I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.
LinkedIn