Wiele bloków catch
Część sekcji Logika i sterowanie przepływem ścieżki C# w Coddy. Lekcja 25 z 66.
Wiele bloków catch pozwala obsługiwać różne typy wyjątków za pomocą osobnego kodu dla każdego typu wyjątku.
Zacznij od podstawowego bloku try:
try
{
int number = int.Parse("abc");
}
Dodaj blok catch dla określonego wyjątku:
try
{
int number = int.Parse("abc");
}
catch (FormatException ex)
{
Console.WriteLine("Format Exception: " + ex.Message);
}
Możesz dodać wiele bloków catch, aby obsługiwać różne wyjątki:
try
{
int number = int.Parse("abc");
int result = 10 / number;
}
catch (FormatException ex)
{
Console.WriteLine("Format Exception: " + ex.Message);
}
catch (DivideByZeroException ex)
{
Console.WriteLine("Divide By Zero Exception: " + ex.Message);
}
Wykona się pierwszy pasujący blok catch. Uporządkuj bloki catch od najbardziej szczegółowych do najbardziej ogólnych typów wyjątków.
Wyzwanie
ŁatwyUtwórz metodę o nazwie DivideNumbers, która przyjmuje dwa parametry typu string:
numeratorStr: ciąg znaków reprezentujący licznikdenominatorStr: ciąg znaków reprezentujący mianownik
Metoda powinna:
- Spróbować sparsować oba ciągi do liczb całkowitych
- Spróbować podzielić licznik przez mianownik
- Zwrócić wynik jako liczbę całkowitą
- Obsłużyć FormatException, wypisując "Invalid format" i zwracając 0
- Obsłużyć DivideByZeroException, wypisując "Cannot divide by zero" i zwracając 0
- Obsłużyć wszystkie inne wyjątki za pomocą ogólnego bloku catch, który wypisuje "An error occurred" i zwraca 0
Spróbuj swoich sił
using System;
public class Program
{
public static int DivideNumbers(string numeratorStr, string denominatorStr)
{
// Wpisz tutaj swój kod
}
public static void Main(string[] args)
{
string numeratorStr = Console.ReadLine();
string denominatorStr = Console.ReadLine();
int result = DivideNumbers(numeratorStr, denominatorStr);
Console.WriteLine("Result: " + result);
}
}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