Menu
Coddy logo textTech

Własne wyjątki

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

Własne 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ć lub dostosowywać funkcjonalność. 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 podaje domyślny komunikat, gdy nie zostanie podany żaden komunikat.
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 z ujemnym wiekiem, zgłosi Twój własny wyjątek z komunikatem „Wiek nie może być ujemny.”

Uwaga: W ćwiczeniach z tej lekcji funkcje walidujące zwracają true, gdy dane wejściowe są prawidłowe, i zgłaszają własny wyjątek, gdy tak nie jest. Ponieważ nieobsłużony wyjątek natychmiast zatrzymuje wykonywanie programu, przypadki testowe muszą weryfikować tylko ścieżkę zwracającą true: sam wyjątek jest obserwowalnym wynikiem dla nieprawidłowych danych wejściowych.

challenge icon

Wyzwanie

Średni

Utwórz własną klasę wyjątków 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