Menu
CoddyTech

Własne wyjątki

Część sekcji Logika i sterowanie przepływem ścieżki C# w Coddy. Lekcja 29 z 66.

Niestandardowe wyjątki pozwalają tworzyć konkretne typy wyjątków dla unikalnych scenariuszy błędów w aplikacji.

Aby utworzyć własny wyjątek, zdefiniuj klasę, która dziedziczy po Exception. Dziedziczenie oznacza, że nowa klasa automatycznie zyskuje wszystkie zachowania klasy nadrzędnej, w tym przypadku Exception, a jednocześnie pozwala dodawać funkcjonalności lub je dostosowywać. Składnia class MyException : Exception oznacza, że MyException rozszerza Exception.

public class InvalidAgeException : Exception
{
    public InvalidAgeException() : base("Age is not valid.")
    {
    }
    
    public InvalidAgeException(string message) : base(message)
    {
    }
}

: Exception: dziedziczy po wbudowanej klasie Exception.
: base(...): wywołuje konstruktor nadrzędnej klasy Exception, aby ustawić komunikat o błędzie.
Pierwszy konstruktor udostępnia domyślny komunikat, gdy żaden nie został podany.
Drugi konstruktor przyjmuje własny komunikat, aby wywołujący mogli szczegółowo opisać błąd.

Teraz możesz zgłosić własny wyjątek, gdy zajdzie taka potrzeba:

int age = -5;
if (age < 0)
{
    throw new InvalidAgeException("Age cannot be negative.");
}

Gdy ten kod zostanie wykonany dla ujemnego wieku, zostanie zgłoszony wyjątek niestandardowy z komunikatem "Age cannot be negative."

Uwaga: W ćwiczeniach do tej lekcji funkcje walidujące zwracają true, gdy dane wejściowe są prawidłowe, a w przeciwnym razie zgłaszają wyjątek niestandardowy. Ponieważ nieobsłużony wyjątek natychmiast zatrzymuje wykonanie, przypadki testowe muszą jedynie sprawdzać ścieżkę zwracającą true: wyjątek sam w sobie jest obserwowalnym wynikiem dla nieprawidłowych danych wejściowych.

challenge icon

Wyzwanie

Średni

Utwórz własną klasę wyjątku o nazwie InvalidTemperatureException, która dziedziczy po Exception. Powinna mieć:

  1. Konstruktor domyślny, który ustawia komunikat "Temperature is not valid."
  2. Konstruktor, który przyjmuje własny komunikat.

Następnie zaimplementuj metodę o nazwie checkTemperature, która:

  • Przyjmuje parametr typu integer reprezentujący temperaturę w stopniach Celsjusza
  • Rzuca wyjątek InvalidTemperatureException z komunikatem "Temperature below absolute zero!", jeśli temperatura jest niższa niż -273
  • Zwraca true, jeśli temperatura jest prawidłowa

Spróbuj swoich sił

using System;

class CheckTemperature
{
    // Utwórz tutaj własną klasę wyjątku
    
    public static bool checkTemperature(int celsius)
    {
        // Napisz tutaj swój kod
    }
    
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i sterowanie przepływem

Poćwicz samodzielnie: Kompilator C# online