Blok „try-catch”
Część sekcji Logika i przepływ sterowania ścieżki Dart w Coddy. Lekcja 39 z 65.
Skoro już wiesz, czym są wyjątki, nauczmy się, jak sprawnie je obsługiwać za pomocą bloku try-catch. To podstawowe narzędzie, które zapobiega awarii programu, gdy coś pójdzie nie tak.
Blok try-catch działa poprzez umieszczenie potencjalnie problematycznego kodu w sekcji try. Jeśli wystąpi wyjątek, Dart zamiast zakończyć działanie programu, natychmiast przechodzi do sekcji catch, w której możesz odpowiednio obsłużyć błąd.
try {
// Kod, który może spowodować wyjątek
int number = int.parse("abc");
} catch (e) {
// Kod, który jest wykonywany, gdy wystąpi wyjątek
print("Something went wrong: $e");
}W tym przykładzie próba przekształcenia ciągu znaków "abc" na liczbę całkowitą zwykle spowodowałaby awarię programu. Ponieważ jednak jest ona ujęta w bloku try, wyjątek zostaje przechwycony i obsłużony w bloku catch. Zmienna e zawiera informacje o tym, co poszło nie tak.
To podejście pozwala programowi działać dalej nawet wtedy, gdy wystąpią nieoczekiwane sytuacje, dzięki czemu kod jest znacznie bardziej odporny i przyjazny dla użytkownika.
Wyzwanie
ŁatwyUtwórz program, który bezpiecznie konwertuje ciągi znaków wprowadzone przez użytkownika na liczby, używając bloku try-catch. Program powinien obsługiwać przypadki, w których dane wejściowe mogą nie być prawidłową liczbą, i zapobiegać awariom programu.
- Wczytaj ciąg znaków reprezentujący liczbę, którą trzeba przekonwertować na liczbę całkowitą
- Użyj bloku
try-catch, aby bezpiecznie podjąć próbę konwersji za pomocąint.parse() - Jeśli konwersja się powiedzie, oblicz kwadrat liczby (pomnóż ją przez samą siebie)
- Jeśli konwersja się nie powiedzie i wystąpi wyjątek, obsłuż błąd w odpowiedni sposób
- Wyświetl odpowiedni wynik lub komunikat o błędzie w dokładnym formacie pokazanym poniżej
Na przykład, jeśli dane wejściowe to "5", program powinien wyświetlić:
Processing input: 5
Conversion successful!
The square of 5 is: 25Jeśli dane wejściowe to "abc", program powinien wyświetlić:
Processing input: abc
Error: Cannot convert 'abc' to a number
Please enter a valid integerJeśli dane wejściowe to "12", program powinien wyświetlić:
Processing input: 12
Conversion successful!
The square of 12 is: 144Program musi używać bloku try-catch do objęcia operacji int.parse(). W sekcji try podejmij próbę konwersji ciągu wejściowego na liczbę całkowitą i oblicz jej kwadrat. W sekcji catch obsłuż każdy wyjątek, który wystąpi podczas konwersji, i wyświetl odpowiedni komunikat o błędzie. Program powinien działać normalnie niezależnie od tego, czy konwersja się powiedzie, czy nie.
Spróbuj swoich sił
import 'dart:io';
void main() {
// Wczytaj ciąg znaków z wejścia
String? input = stdin.readLineSync();
// Wyświetl komunikat o przetwarzaniu
print('Processing input: $input');
// TODO: Napisz swój kod poniżej
// Użyj bloku try-catch, aby bezpiecznie przekonwertować dane wejściowe na liczbę całkowitą
// Oblicz kwadrat liczby, jeśli konwersja się powiedzie
// Obsłuż wszelkie wyjątki, które wystąpią podczas konwersji
}Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ sterowania
1Zaawansowana manipulacja listami
Właściwości listy: first i lastStan listy: isEmpty i isNotEmpOdwracanie listyDodawanie do listy: insertUsuwanie z listy: removeWhereWyszukiwanie na liście: indexOfSortowanie listyMieszanie elementów listyPodsumowanie – Organizator listy4Zaawansowane operacje na mapach
Iterowanie po mapieSprawdzanie kluczy i wartościWłaściwości mapy: klucze i wartościDodawanie warunkowe: putIfAbsentUsuwanie wpisów z mapyZagnieżdżone mapyPodsumowanie – aktualizacja stanu magazynowego2Operacje funkcyjne na listach
Przekształcanie za pomocą 'map'Filtrowanie za pomocą 'where'Używanie '.toList()'Sprawdzanie warunków za pomocą 'any'Warunki z użyciem 'every'Wyszukiwanie za pomocą 'firstWhere'Podsumowanie — filtrowanie danych5Projekt: Kalkulator koszyka zakupowego
Konfiguracja projektuDodawanie produktów do koszyka3Zbiory
Czym jest zbiór?Tworzenie zbioruDodawanie i usuwanie elementów ze zbiorówSprawdzanie, czy element znajduje się w zbiorzeKonwersja listy na zbiórSuma zbiorówCzęść wspólna zbiorówRóżnica zbiorówPodsumowanie — unikalna lista gości6Podstawy obsługi błędów
Czym są wyjątki?Blok „try-catch”Przechwytywanie wyjątków za pomocą „on”Blok „finally”Rzucanie wyjątkuPodsumowanie – bezpieczne dzieleniePoćwicz samodzielnie: Kompilator Dart online