Dart:
Fouten afhandelen
Hoe doe je dat:
Dart ondersteunt twee soorten fouten: compileertijd fouten en looptijd fouten. Compileertijd fouten worden gedetecteerd door de Dart-analyzer voordat de code wordt uitgevoerd, terwijl looptijd fouten, of uitzonderingen, optreden tijdens de uitvoering. Hier is hoe je uitzonderingen in Dart afhandelt:
Probeer-Vang
Gebruik try-catch
om uitzonderingen te vangen en te voorkomen dat ze je applicatie laten crashen:
try {
var resultaat = 100 ~/ 0; // Poging tot delen door nul, veroorzaakt een uitzondering
} catch (e) {
print('Een uitzondering gevangen: $e'); // Handelt de uitzondering af
}
Voorbeelduitvoer: Een uitzondering gevangen: IntegerDivisionByZeroException
Specifieke Uitzondering
Om specifieke uitzonderingen af te handelen, vermeld je de uitzondering na catch
:
try {
var resultaat = 100 ~/ 0;
} on IntegerDivisionByZeroException {
print('Kan niet delen door nul.'); // Handelt specifiek het delen door nul uitzonderingen af
}
Voorbeelduitvoer: Kan niet delen door nul.
Stack Trace
Om een stack trace te krijgen voor debuggen, gebruik je een tweede parameter in het catch-blok:
try {
var resultaat = 100 ~/ 0;
} catch (e, s) {
print('Uitzondering: $e');
print('Stack trace: $s'); // Print stack trace voor debuggen
}
Tot Slot
Gebruik finally
om code uit te voeren na try/catch, ongeacht of er een uitzondering was:
try {
var resultaat = 100 ~/ 0;
} catch (e) {
print('Een uitzondering gevangen: $e');
} finally {
print('Dit wordt altijd uitgevoerd.'); // Opruimcode of laatste stappen
}
Voorbeelduitvoer:
Een uitzondering gevangen: IntegerDivisionByZeroException
Dit wordt altijd uitgevoerd.
Bibliotheken van Derden
Hoewel de kernbibliotheek van Dart robuust is voor foutafhandeling, kun je ook gebruikmaken van pakketten van derden zoals dartz
voor functioneel programmeren die concepten introduceert zoals Either
en Option
die kunnen worden gebruikt voor foutafhandeling. Hier is een voorbeeld van het gebruik van dartz
voor foutafhandeling:
- Voeg
dartz
toe aan jepubspec.yaml
bestand onder afhankelijkheden:
dependencies:
dartz: ^0.10.0
- Gebruik
Either
om fouten op een elegante manier af te handelen in je Dart-code:
import 'package:dartz/dartz.dart';
Either<String, int> delen(int dividend, int deler) {
if (deler == 0) {
return Left('Kan niet delen door nul.');
} else {
return Right(dividend ~/ deler);
}
}
void main() {
final resultaat = delen(100, 0);
resultaat.fold(
(links) => print('Fout: $links'),
(rechts) => print('Resultaat: $rechts')
);
}
Voorbeelduitvoer: Fout: Kan niet delen door nul.
Het Left
deel vertegenwoordigt meestal de fout, en het Right
deel vertegenwoordigt succes. Dit patroon maakt het mogelijk fouten op een functionelere manier af te handelen, en biedt duidelijkheid en controle over foutbeheer.