Menu
Coddy logo textTech

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.

challenge icon

Aufgabe

Mittel

Erstellen Sie eine benutzerdefinierte Ausnahme-Klasse namens InvalidTemperatureException, die von Exception erbt. Sie sollte Folgendes haben:

  1. Ein Standardkonstruktor, der die Nachricht "Temperature is not valid." setzt.
  2. 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 InvalidTemperatureException mit der Nachricht "Temperature below absolute zero!" wirft, wenn die Temperatur kleiner als -273 ist
  • true zurü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
    }
    
}
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