Der 'try-catch'-Block
Teil des Abschnitts Logik & Ablauf der Dart-Journey von Coddy — Lektion 39 von 65.
Nachdem Sie nun verstehen, was Exceptions sind, lernen wir nun, wie man sie mit dem try-catch-Block elegant handhabt. Dies ist das grundlegende Werkzeug, das verhindert, dass Ihr Programm abstürzt, wenn etwas schiefgeht.
Der try-catch-Block funktioniert, indem potenziell problematischer Code in einen try-Abschnitt eingeschlossen wird. Wenn eine Exception auftritt, springt Dart, anstatt Ihr Programm zum Absturz zu bringen, sofort zum catch-Abschnitt, in dem Sie den Fehler angemessen behandeln können.
try {
// Code, der eine Exception auslösen könnte
int number = int.parse("abc");
} catch (e) {
// Code, der ausgeführt wird, wenn eine Exception auftritt
print("Something went wrong: $e");
}In diesem Beispiel würde der Versuch, den String "abc" in eine Ganzzahl umzuwandeln, normalerweise Ihr Programm zum Absturz bringen. Da er jedoch in einen try-Block eingeschlossen ist, wird die Exception stattdessen im catch-Block abgefangen und verarbeitet. Die Variable e enthält Informationen darüber, was schiefgelaufen ist.
Dieser Ansatz ermöglicht es Ihrem Programm, auch dann weiterzulaufen, wenn unerwartete Situationen auftreten, was Ihren Code wesentlich robuster und benutzerfreundlicher macht.
Aufgabe
EinfachErstellen Sie ein Programm, das Benutzereingaben sicher in Zahlen umwandelt, indem es einen try-catch-Block verwendet. Ihr Programm sollte Fälle behandeln, in denen die Eingabe möglicherweise keine gültige Zahl ist, und verhindern, dass das Programm abstürzt.
- Lesen Sie eine String-Eingabe ein, die eine Zahl darstellt, die in eine Ganzzahl umgewandelt werden muss
- Verwenden Sie einen
try-catch-Block, um die Konvertierung sicher mitint.parse()zu versuchen - Wenn die Konvertierung erfolgreich ist, berechnen Sie das Quadrat der Zahl (multiplizieren Sie sie mit sich selbst)
- Wenn die Konvertierung fehlschlägt und eine Ausnahme auftritt, behandeln Sie den Fehler angemessen
- Zeigen Sie das entsprechende Ergebnis oder die Fehlermeldung im genau unten gezeigten Format an
Wenn die Eingabe zum Beispiel "5" ist, sollte Ihr Programm Folgendes ausgeben:
Processing input: 5
Conversion successful!
The square of 5 is: 25Wenn die Eingabe "abc" ist, sollte Ihr Programm Folgendes ausgeben:
Processing input: abc
Error: Cannot convert 'abc' to a number
Please enter a valid integerWenn die Eingabe "12" ist, sollte Ihr Programm Folgendes ausgeben:
Processing input: 12
Conversion successful!
The square of 12 is: 144Ihr Programm muss einen try-catch-Block verwenden, um die int.parse()-Operation zu umschließen. Versuchen Sie im try-Abschnitt, den Eingabestring in eine Ganzzahl umzuwandeln und deren Quadrat zu berechnen. Behandeln Sie im catch-Abschnitt jede Ausnahme, die während der Konvertierung auftritt, und zeigen Sie eine entsprechende Fehlermeldung an. Das Programm sollte normal weiterlaufen, unabhängig davon, ob die Konvertierung erfolgreich ist oder fehlschlägt.
Spickzettel
Verwenden Sie try-catch-Blöcke, um Ausnahmen elegant zu behandeln und Programmabstürze zu verhindern:
try {
// Code, der eine Ausnahme verursachen könnte
int number = int.parse("abc");
} catch (e) {
// Code, der ausgeführt wird, wenn eine Ausnahme auftritt
print("Something went wrong: $e");
}Der try-Block enthält potenziell problematischen Code, während der catch-Block alle auftretenden Ausnahmen behandelt. Die Variable e enthält Informationen über die Ausnahme.
Probier es selbst
import 'dart:io';
void main() {
// Eingabe-String lesen
String? input = stdin.readLineSync();
// Verarbeitungsnachricht anzeigen
print('Processing input: $input');
// TODO: Schreibe deinen Code unten
// Verwende einen try-catch-Block, um die Eingabe sicher in eine Ganzzahl umzuwandeln
// Berechne das Quadrat, wenn die Umwandlung erfolgreich ist
// Behandle alle Ausnahmen, die während der Umwandlung auftreten
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablauf
1Fortgeschrittene Listenmanipulation
Listen-Eigenschaften: first & lastListen-Status: isEmpty & isNotEmptyEine Liste umkehrenHinzufügen zu einer Liste: insertElemente aus Liste entfernen: removeWhereSuchen in einer Liste: indexOfEine Liste sortierenEine Liste mischenZusammenfassung – Listen-Organizer4Fortgeschrittene Map-Manipulation
Über eine Map iterierenPrüfen auf Schlüssel und WerteMap-Eigenschaften: keys & valuesBedingtes Hinzufügen: putIfAbsentEinträge aus einer Map entfernenVerschachtelte MapsRückblick – Inventar-Update7Fortgeschrittene Funktionen
Anonyme FunktionenFunktionen als Argumente übergebenClosures verstehenEinführung in die RekursionRekursive Funktion: CountdownRekursive Funktion: FakultätZusammenfassung – List Processor10Abschluss-Herausforderungen
Herausforderung: NotensortiererHerausforderung: VokalzählerHerausforderung: FizzBuzz2Funktionale Listenoperationen
Transformieren mit 'map'Filtern mit 'where''.toList()' verwendenBedingungen prüfen mit 'any'Bedingungen mit 'every'Suchen mit 'firstWhere'Zusammenfassung – Datenfilterung3Sets
Was ist ein Set?Ein Set erstellenHinzufügen und Entfernen in SetsPrüfen auf Elemente in einem SetEine Liste in ein Set umwandelnSet-VereinigungSet-SchnittmengeSet-DifferenzRückblick – Einzigartige Gästeliste6Grundlagen der Fehlerbehandlung
Was sind Exceptions?Der 'try-catch'-BlockExceptions mit 'on' abfangenDer 'finally'-BlockEine Exception auslösenRückblick - Sichere Division