Benutzerdefinierte Exceptions
Teil des Abschnitts Logik & Ablauf der C#-Journey von Coddy. Lektion 29 von 66.
Benutzerdefinierte Ausnahmen ermöglichen es dir, spezifische Ausnahmetypen für die besonderen Fehlerszenarien deiner Anwendung zu erstellen.
Um eine benutzerdefinierte Ausnahme zu erstellen, definiere eine Klasse, die von Exception erbt. Vererbung bedeutet, dass deine neue Klasse automatisch das gesamte Verhalten der übergeordneten Klasse übernimmt, in diesem Fall Exception, und dir zugleich ermöglicht, Funktionalität hinzuzufügen oder anzupassen. 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 liefert eine Standardmeldung, wenn keine angegeben wird.
Der zweite Konstruktor akzeptiert eine benutzerdefinierte Meldung, damit Aufrufer den Fehler ausführlich beschreiben können.
Jetzt kannst du deine eigene Ausnahme auslösen, 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, löst er deine benutzerdefinierte Ausnahme mit der Meldung "Age cannot be negative." aus.
Hinweis: In den Übungen zu dieser Lektion geben Validierungsfunktionen true zurück, wenn die Eingabe gültig ist, und lösen eine benutzerdefinierte Ausnahme aus, wenn sie ungültig ist. Da eine nicht abgefangene Ausnahme die Ausführung sofort beendet, müssen die Testfälle nur den Rückgabepfad mit true überprüfen: Bei ungültigen Eingaben ist die Ausnahme selbst das beobachtbare Ergebnis.
Aufgabe
MittelErstelle eine benutzerdefinierte Ausnahmeklasse namens InvalidTemperatureException, die von Exception erbt. Sie sollte Folgendes enthalten:
- Einen Standardkonstruktor, der die Meldung "Temperature is not valid." festlegt
- Einen Konstruktor, der eine benutzerdefinierte Meldung akzeptiert
Implementiere dann eine Methode namens checkTemperature, die:
- einen Integer-Parameter entgegennimmt, der eine Temperatur in Celsius darstellt
- eine
InvalidTemperatureExceptionmit der Meldung "Temperature below absolute zero!" auslöst, wenn die Temperatur kleiner als -273 ist - true zurückgibt, wenn die Temperatur gültig ist
Probier es selbst
using System;
class CheckTemperature
{
// Erstelle hier deine eigene Ausnahmeklasse
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
1Mehrdimensionale Arrays
Grundlagen 2D-Arrays2D-Arrays deklarieren und initialisierenAuf Elemente von 2D-Arrays zugreifenVerschachtelte Schleifen mit 2D-ArraysGezackte ArraysHäufige MatrixoperationenZusammenfassung – Mehrdimensionale Arrays4Techniken zur Ablaufsteuerung
Frühe RückgabenWächterklauselnSprunganweisungen (goto)Break und ContinueVerschachtelte Bedingungen abflachen7Logische Operatoren – Fortgeschritten
KurzschlussauswertungBedingte logische OperatorenOperatorrangfolgeRückblick – Erweiterte Operatoren2Fortgeschrittene Entscheidungslogik
Mehrere BedingungenKomplexe boolesche LogikVergleich: If vs. SwitchVerschachtelte Switch-AnweisungenRückblick – Fortgeschrittene Entscheidungen5Fehlerbehandlung mit Exceptions
Grundlagen von Try-CatchException-TypenMehrere Catch-BlöckeArbeiten mit DateienFinally-BlockUsing im Vergleich zu Try-FinallyBenutzerdefinierte ExceptionsZusammenfassung – Fehlerbehandlung3Schleifenverbesserungen
SchleifenleistungKomplexe IterationJeder SchleifentypSchleifen refaktorierenRückblick – Optimierte Schleifen6Behandlung von Nullwerten
Grundlagen von NullreferenzenNullable WerttypenMuster zur NullprüfungDefensive ProgrammierungZusammenfassung – NullsicherheitÜbe selbstständig: Online-C#-Compiler