Dart:
Gestion des erreurs
Comment faire :
Dart prend en charge deux types d’erreurs : les erreurs de compilation et les erreurs d’exécution. Les erreurs de compilation sont détectées par l’analyseur Dart avant l’exécution du code, tandis que les erreurs d’exécution, ou exceptions, se produisent pendant l’exécution. Voici comment vous gérez les exceptions en Dart :
Essayer-Attraper
Utilisez try-catch
pour capturer les exceptions et les empêcher de faire planter votre application :
try {
var result = 100 ~/ 0; // Tentative de division par zéro, lance une exception
} catch (e) {
print('Exception capturée : $e'); // Gère l'exception
}
Sortie d’exemple : Exception capturée : IntegerDivisionByZeroException
Exception Spécifique
Pour gérer des exceptions spécifiques, mentionnez l’exception après catch
:
try {
var result = 100 ~/ 0;
} on IntegerDivisionByZeroException {
print('Impossible de diviser par zéro.'); // Gère spécifiquement les exceptions de division par zéro
}
Sortie d’exemple : Impossible de diviser par zéro.
Trace de Pile
Pour obtenir une trace de pile pour le débogage, utilisez un second paramètre dans le bloc catch :
try {
var result = 100 ~/ 0;
} catch (e, s) {
print('Exception : $e');
print('Trace de pile : $s'); // Imprime la trace de pile pour le débogage
}
Enfin
Utilisez finally
pour exécuter du code après try/catch, qu’une exception ait été lancée ou non :
try {
var result = 100 ~/ 0;
} catch (e) {
print('Exception capturée : $e');
} finally {
print('Ceci est toujours exécuté.'); // Code de nettoyage ou étapes finales
}
Sortie d’exemple :
Exception capturée : IntegerDivisionByZeroException
Ceci est toujours exécuté.
Bibliothèques Tiers
Bien que la bibliothèque de base de Dart soit robuste pour le traitement des erreurs, vous pouvez également utiliser des packages tiers comme dartz
pour la programmation fonctionnelle qui introduit des concepts comme Either
et Option
qui peuvent être utilisés pour le traitement des erreurs. Voici un exemple d’utilisation de dartz
pour le traitement des erreurs :
- Ajoutez
dartz
à votre fichierpubspec.yaml
sous dépendances :
dependencies:
dartz: ^0.10.0
- Utilisez
Either
pour gérer les erreurs avec grâce dans votre code Dart :
import 'package:dartz/dartz.dart';
Either<String, int> divide(int dividende, int diviseur) {
if (diviseur == 0) {
return Left('Impossible de diviser par zéro.');
} else {
return Right(dividende ~/ diviseur);
}
}
void main() {
final result = divide(100, 0);
result.fold(
(left) => print('Erreur : $left'),
(right) => print('Résultat : $right')
);
}
Sortie d’exemple : Erreur : Impossible de diviser par zéro.
La partie Left
représente généralement l’erreur, et la partie Right
, le succès. Ce modèle permet de gérer les erreurs de manière plus fonctionnelle, offrant clarté et contrôle sur la gestion des erreurs.