Menu
Coddy logo textTech

Benutzerdefinierte 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 benutzerdefinierte Nachricht, damit Aufrufer den Fehler detailliert beschreiben können.

Jetzt kannst du bei Bedarf deine eigene Ausnahme auslösen:

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 für diese Lektion geben Validierungsfunktionen true zurück, wenn die Eingabe gültig ist, und lösen eine benutzerdefinierte Ausnahme aus, wenn sie es nicht ist. Da eine nicht behandelte Ausnahme die Ausführung sofort beendet, müssen die Testfälle nur den Rückgabepfad mit true überprüfen: Die Ausnahme selbst ist das beobachtbare Ergebnis für ungültige Eingaben.

challenge icon

Aufgabe

Mittel

Erstelle eine benutzerdefinierte Ausnahmeklasse namens InvalidTemperatureException, die von Exception erbt. Sie sollte Folgendes enthalten:

  1. Einen Standardkonstruktor, der die Nachricht „Temperature is not valid.“ festlegt.
  2. Einen Konstruktor, der eine benutzerdefinierte Nachricht akzeptiert.

Implementiere anschließend eine Methode namens checkTemperature, die:

  • Einen ganzzahligen Parameter entgegennimmt, der eine Temperatur in Celsius darstellt
  • Eine InvalidTemperatureException mit der Nachricht „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 benutzerdefinierte Exception-Klasse
    
    public static bool checkTemperature(int celsius)
    {
        // Schreibe hier deinen Code
    }
    
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Ablauf

Übe selbstständig: Online-C#-Compiler