Custom Exceptions
Teil des Abschnitts Logik & Ablauf der C#-Journey von Coddy — Lektion 29 von 66.
Benutzerdefinierte Ausnahmen ermöglichen es Ihnen, spezifische Ausnahmetypen für die einzigartigen Fehlerszenarien Ihrer Anwendung zu erstellen.
Um eine benutzerdefinierte Ausnahme zu erstellen, definieren Sie eine Klasse, die von Exception erbt. Vererbung bedeutet, dass Ihre neue Klasse automatisch alle Verhaltensweisen der Elternklasse erhält — in diesem Fall Exception —, während Sie Funktionalität hinzufügen oder anpassen können. Die Syntax class MyException : Exception bedeutet MyException erweitert Exception.
public class InvalidAgeException : Exception
{
public InvalidAgeException() : base("Age is not valid.")
{
}
public InvalidAgeException(string message) : base(message)
{
}
}: Exception — erbt von der integrierten Exception-Klasse.: base(...) — ruft den Konstruktor der übergeordneten Exception-Klasse auf, um die Fehlermeldung festzulegen.
Der erste Konstruktor stellt eine Standardmeldung bereit, wenn keine angegeben wird.
Der zweite Konstruktor akzeptiert eine benutzerdefinierte Meldung, damit Aufrufer den Fehler detailliert beschreiben können.
Nun können Sie Ihre benutzerdefinierte Ausnahme werfen, wenn nötig:
int age = -5;
if (age < 0)
{
throw new InvalidAgeException("Age cannot be negative.");
}Wenn dieser Code mit einem negativen Alter ausgeführt wird, wirft er Ihre benutzerdefinierte Ausnahme mit der Nachricht „Age cannot be negative.“
Hinweis: In den Übungen für diese Lektion geben Validierungsfunktionen true zurück, wenn die Eingabe gültig ist, und werfen eine benutzerdefinierte Ausnahme, wenn nicht. Da eine unbehandelte Ausnahme die Ausführung sofort stoppt, müssen die Testfälle nur den true-Rückgabepfad überprüfen — die Ausnahme selbst ist das beobachtbare Ergebnis für ungültige Eingaben.
Aufgabe
MittelErstellen Sie eine benutzerdefinierte Ausnahme-Klasse namens InvalidTemperatureException, die von Exception erbt. Sie sollte Folgendes haben:
- Ein Standardkonstruktor, der die Nachricht "Temperature is not valid." setzt.
- Ein Konstruktor, der eine benutzerdefinierte Nachricht akzeptiert.
Implementieren Sie dann eine Methode namens checkTemperature, die:
- Einen Ganzzahlparameter nimmt, der eine Temperatur in Celsius darstellt
- Eine
InvalidTemperatureExceptionmit der Nachricht "Temperature below absolute zero!" wirft, wenn die Temperatur kleiner als -273 ist truezurückgibt, wenn die Temperatur gültig ist
Spickzettel
Um eine benutzerdefinierte Ausnahme zu erstellen, definieren Sie eine Klasse, die von Exception erbt:
public class InvalidAgeException : Exception
{
public InvalidAgeException() : base("Age is not valid.")
{
}
public InvalidAgeException(string message) : base(message)
{
}
}Werfen Sie Ihre benutzerdefinierte Ausnahme bei Bedarf:
int age = -5;
if (age < 0)
{
throw new InvalidAgeException("Age cannot be negative.");
}Probier es selbst
using System;
class CheckTemperature
{
// Erstellen Sie hier Ihre benutzerdefinierte Ausnahmeklasse
public static bool checkTemperature(int celsius)
{
// Schreiben Sie hier Ihren Code
}
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablauf
1Multi-dimensional Arrays
2D Arrays BasicsDeclaring and Initializing 2DAccessing 2D Array ElementsNested Loops with 2D ArraysJagged ArraysCommon Matrix OperationsRecap - Multi-dimensional4Flow Control Techniques
Early ReturnsGuard ClausesJump Statements (goto)Break and ContinueFlatten Nested Conditionals7Logical Operators Advanced
Short-Circuit EvaluationConditional Logical OperatorsOperator PrecedenceRecap - Advanced Operators2Advanced Decision Making
Multiple ConditionsComplex Boolean LogicIf vs. Switch ComparisonNested Switch StatementsRecap - Advanced Decisions5Exception Handling
Try-Catch BasicsException TypesMultiple Catch BlocksWorking with FilesFinally BlockUsing vs. Try-FinallyCustom ExceptionsRecap - Error Handling3Loop Enhancements
Loop PerformanceIterating ComplexEach Loop TypeRefactoring LoopsRecap - Optimized Loops6Null Handling
Null Reference BasicsNullable Value TypesNull Checking PatternsDefensive ProgrammingRecap - Null Safety