Custom Exceptions
Teil des Abschnitts Logik & Ablauf der C#-Journey von Coddy. Lektion 29 von 66.
Mit benutzerdefinierten Ausnahmen kannst du spezifische Ausnahmetypen für die einzigartigen Fehlerszenarien deiner Anwendung erstellen.
Um eine benutzerdefinierte Ausnahme zu erstellen, definiere eine erbt-Klasse von Exception. Vererbung bedeutet, dass deine neue Klasse automatisch das gesamte Verhalten der übergeordneten Klasse übernimmt, in diesem Fall Exception, und du gleichzeitig Funktionalität hinzufügen oder anpassen kannst. 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 Klasse Exception.: base(...): ruft den Konstruktor der übergeordneten Klasse Exception auf, um die Fehlermeldung festzulegen.
Der erste Konstruktor stellt eine Standardnachricht bereit, wenn keine angegeben wird.
Der zweite Konstruktor akzeptiert eine custom message, damit Aufrufer den Fehler detailliert beschreiben können.
Jetzt kannst du deine custom exception bei Bedarf throw:
int age = -5;
if (age < 0)
{
throw new InvalidAgeException("Age cannot be negative.");
}Wenn dieser Code mit einem negative age ausgeführt wird, löst er deine custom exception mit der message "Age cannot be negative." aus.
Hinweis: In den Übungen für diese Lektion geben Validierungsfunktionen true zurück, wenn die Eingabe valid ist, und lösen eine custom exception aus, wenn dies nicht der Fall ist. Da eine nicht behandelte exception die Ausführung sofort beendet, müssen die Testfälle nur den Rückgabepfad mit true überprüfen: Die exception selbst ist das beobachtbare Ergebnis für ungültige Eingaben.
Aufgabe
MittelErstelle eine custom exception-Klasse namens InvalidTemperatureException, die von Exception erbt. Sie sollte Folgendes enthalten:
- Einen Default-Konstruktor, der eine message "Temperature is not valid." festlegt.
- Einen Konstruktor, der eine custom message akzeptiert.
Implementiere anschließend eine Methode namens checkTemperature, die:
- einen Ganzzahlparameter entgegennimmt, der eine Temperatur in Celsius darstellt
- eine
InvalidTemperatureExceptionmit der message "Temperature below absolute zero!" auslöst, wenn die Temperatur kleiner als -273 ist - true zurückgibt, wenn die Temperatur valid ist
Probier es selbst
using System;
class CheckTemperature
{
// Erstelle hier deine benutzerdefinierte Exception-Klasse
public static bool checkTemperature(int celsius)
{
// Schreibe hier deinen 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Übe selbstständig: Online-C#-Compiler