Le bloc 'try-catch'
Fait partie de la section Logique & Flux du Journey Dart de Coddy — leçon 39 sur 65.
Maintenant que vous comprenez ce que sont les exceptions, apprenons à les gérer avec élégance en utilisant le bloc try-catch. C'est l'outil fondamental qui empêche votre programme de planter lorsque quelque chose ne va pas.
Le bloc try-catch fonctionne en enveloppant le code potentiellement problématique dans une section try. Si une exception se produit, au lieu de faire planter votre programme, Dart passe immédiatement à la section catch où vous pouvez gérer l'erreur de manière appropriée.
try {
// Code qui pourrait causer une exception
int number = int.parse("abc");
} catch (e) {
// Code qui s'exécute si une exception se produit
print("Something went wrong: $e");
}Dans cet exemple, tenter de convertir la chaîne "abc" en un entier ferait normalement planter votre programme. Cependant, parce qu'elle est enveloppée dans un bloc try, l'exception est interceptée et gérée dans le bloc catch à la place. La variable e contient des informations sur ce qui s'est mal passé.
Cette approche permet à votre programme de continuer à s'exécuter même lorsque des situations inattendues surviennent, rendant votre code beaucoup plus robuste et convivial.
Défi
FacileCréez un programme qui convertit en toute sécurité les chaînes de caractères saisies par l'utilisateur en nombres à l'aide d'un bloc try-catch. Votre programme doit gérer les cas où la saisie pourrait ne pas être un nombre valide et empêcher le programme de planter.
- Lisez une chaîne de caractères en entrée qui représente un nombre devant être converti en entier
- Utilisez un bloc
try-catchpour tenter la conversion en toute sécurité à l'aide deint.parse() - Si la conversion réussit, calculez le carré du nombre (multipliez-le par lui-même)
- Si la conversion échoue et qu'une exception se produit, gérez l'erreur avec élégance
- Affichez le résultat approprié ou le message d'erreur dans le format exact indiqué ci-dessous
Par exemple, si l'entrée est "5", votre programme doit afficher :
Processing input: 5
Conversion successful!
The square of 5 is: 25Si l'entrée est "abc", votre programme doit afficher :
Processing input: abc
Error: Cannot convert 'abc' to a number
Please enter a valid integerSi l'entrée est "12", votre programme doit afficher :
Processing input: 12
Conversion successful!
The square of 12 is: 144Votre programme doit utiliser un bloc try-catch pour envelopper l'opération int.parse(). Dans la section try, tentez de convertir la chaîne d'entrée en un entier et calculez son carré. Dans la section catch, gérez toute exception survenant lors de la conversion et affichez un message d'erreur approprié. Le programme doit continuer à s'exécuter normalement, que la conversion réussisse ou échoue.
Aide-mémoire
Utilisez des blocs try-catch pour gérer les exceptions avec élégance et éviter les plantages du programme :
try {
// Code qui pourrait causer une exception
int number = int.parse("abc");
} catch (e) {
// Code qui s'exécute si une exception se produit
print("Something went wrong: $e");
}Le bloc try contient du code potentiellement problématique, tandis que le bloc catch gère toutes les exceptions qui surviennent. La variable e contient des informations sur l'exception.
Essayez vous-même
import 'dart:io';
void main() {
// Lire la chaîne d'entrée
String? input = stdin.readLineSync();
// Afficher le message de traitement
print('Processing input: $input');
// TODO: Écrivez votre code ci-dessous
// Utiliser un bloc try-catch pour convertir l'entrée en entier en toute sécurité
// Calculer le carré si la conversion réussit
// Gérer toutes les exceptions qui surviennent lors de la conversion
}Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique & Flux
1Manipulation avancée des listes
Propriétés de liste : first & lastÉtat de la liste : isEmpty & isNotEmptyInverser une listeAjouter à une liste : insertSuppression dans une liste : removeWhereRechercher dans une liste : indexOfTrier une listeMélanger une listeRécapitulatif - Organisateur de liste4Manipulation avancée des Maps
Itérer sur une MapVérifier les clés et les valeursPropriétés de Map : keys & valuesAjout conditionnel : putIfAbsentSupprimer des entrées d'une MapMaps imbriquéesRécapitulatif - Mise à jour de l'inventaire2Opérations fonctionnelles sur les listes
Transformer avec 'map'Filtrer avec 'where'Utiliser '.toList()'Vérifier des conditions avec 'any'Conditions avec 'every'Trouver avec 'firstWhere'Récapitulatif - Filtrage de données3Les Ensembles
Qu'est-ce qu'un ensemble ?Créer un ensembleAjouter et supprimer des éléments d'un ensembleVérifier la présence d'éléments dans un ensembleConvertir une liste en ensembleUnion d'ensemblesIntersection d'ensemblesDifférence d'ensemblesRécapitulatif - Liste d'invités uniques6Gestion de base des erreurs
Que sont les exceptions ?Le bloc 'try-catch'Intercepter des exceptions avec 'on'Le bloc 'finally'Lever une exceptionRécapitulatif - Division sécurisée