Appearance
Kapitel 12: Ausnahmebehandlung
12.1 Konzept der Ausnahmen
Ausnahmen sind Fehler während der Programmausführung, die dazu führen können, dass das Programm abstürzt.
12.2 Häufige Ausnahmetypen in Dart
- FormatException: Formatfehler
- RangeError: Bereichsfehler
- NoSuchMethodError: Methode nicht gefunden
- TypeError: Typfehler
12.3 Ausnahmeabfang und -behandlung (try-catch-finally)
dart
void main() {
try {
// Code, der eine Ausnahme werfen könnte
int ergebnis = 10 ~/ 0; // Division durch Null
} catch (e) {
// Ausnahme abfangen und behandeln
print('Fehler: ' + e.toString());
} finally {
// Wird unabhängig davon ausgeführt, ob eine Ausnahme aufgetreten ist oder nicht
print('Finally block ausgeführt');
}
}Spezifische Ausnahmetypen abfangen
dart
void main() {
try {
int ergebnis = int.parse('abc');
} on FormatException catch (e) {
print('Formatfehler: ' + e.message);
} on Exception catch (e) {
print('Ausnahme: ' + e.toString());
} catch (e) {
print('Unbekannter Fehler: ' + e.toString());
}
}12.4 Benutzerdefinierte Ausnahmen
dart
// Benutzerdefinierte Ausnahme
class AlterAusnahme implements Exception {
String fehlermeldung() {
return 'Ungültiges Alter';
}
}
void überprüfeAlter(int alter) {
if (alter < 0 || alter > 150) {
throw AlterAusnahme();
}
}
void main() {
try {
überprüfeAlter(200);
} on AlterAusnahme catch (e) {
print(e.fehlermeldung());
}
}12.5 Praxisbeispiel
dart
// Programmabsturz vermeiden durch Ausnahmeabfang
Future<void> datenHolen() async {
try {
// Simuliere Netzwerkanfrage
await Future.delayed(Duration(seconds: 1));
throw 'Netzwerkfehler';
} catch (e) {
print('Fehler beim Abrufen der Daten: ' + e.toString());
// Zeige Fehlermeldung an
} finally {
print('Datenabruf abgeschlossen');
}
}
void main() {
datenHolen();
print('Andere Aufgaben werden ausgeführt...');
}