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.
Wyzwanie
ŚredniUtwórz własną klasę wyjątków o nazwie InvalidTemperatureException, która dziedziczy po Exception. Powinna mieć:
- Konstruktor domyślny, który ustawia komunikat "Temperature is not valid."
- 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
InvalidTemperatureExceptionz 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
}
}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
1Tablice wielowymiarowe
Podstawy tablic 2DDeklarowanie i inicjalizacja tablic 2DDostęp do elementów tablic 2DZagnieżdżone pętle z tablicami 2DTablice postrzępionePodstawowe operacje na macierzachPodsumowanie — tablice wielowymiarowe4Techniki sterowania przepływem
Wczesne zwrotyKlauzule ochronneInstrukcje skoku (goto)Break i continueSpłaszczanie zagnieżdżonych warunków7Zaawansowane operatory logiczne
Ewaluacja z krótkim spięciemWarunkowe operatory logicznePriorytet operatorówPowtórzenie — zaawansowane operatory2Zaawansowane podejmowanie decyzji
Wiele warunkówZłożona logika Boole’aPorównanie if i switchZagnieżdżone instrukcje switchPodsumowanie — zaawansowane decyzje5Obsługa wyjątków
Podstawy try-catchTypy wyjątkówWiele bloków catchPraca z plikamiBlok finallyusing a try-finallyWłasne wyjątkiPowtórzenie — obsługa błędów3Udoskonalenia pętli
Wydajność pętliIterowanie po złożonych strukturachKażdy typ pętliRefaktoryzacja pętliPodsumowanie — zoptymalizowane pętle6Obsługa wartości null
Podstawy referencji nullTypy wartości dopuszczające nullWzorce sprawdzania nullProgramowanie defensywnePodsumowanie — bezpieczeństwo nullPoćwicz samodzielnie: Kompilator C# online