Bloc finally
Fait partie de la section Logique & Flux du Journey Java de Coddy — leçon 41 sur 59.
Le bloc finally contient du code qui sera exécuté après les blocs try-catch, qu'une exception se produise ou non. Il est couramment utilisé pour des opérations de nettoyage comme la fermeture de fichiers ou de connexions à une base de données.
Voici la structure de base d'un bloc try-catch-finally :
try {
// Code qui pourrait lancer une exception
} catch (ExceptionType e) {
// Code pour gérer l'exception
} finally {
// Code qui s'exécute toujours
}Voyons un exemple avec un compteur :
int counter = 0;
try {
int result = 10 / 0;
// Ceci lancera une exception
counter = 1;
} catch (ArithmeticException e) {
counter = 2;
} finally {
counter = 3;
// Ceci s'exécutera toujours
}Après l'exécution du code ci-dessus, counter contient :
3
Défi
FacileCréez une méthode nommée processNumber qui prend deux arguments :
- Une String (
number) à convertir en entier - Un boolean (
shouldThrow) qui détermine si une exception doit être levée
La méthode doit :
- Initialiser une variable result à 0
- Dans le bloc try :
- Si shouldThrow est true, diviser 10 par 0
- Sinon, convertir la string number en entier et la stocker dans result
- Dans le bloc catch : définir result à -1
- Dans le bloc finally : ajouter 100 à result
- Retourner result sous forme de string
Aide-mémoire
Le bloc finally s'exécute après les blocs try-catch, indépendamment du fait qu'une exception se produise ou non. Il est utilisé pour les opérations de nettoyage.
Structure de base :
try {
// Code susceptible de lever une exception
} catch (ExceptionType e) {
// Code pour gérer l'exception
} finally {
// Code qui s'exécute toujours
}Exemple avec compteur :
int counter = 0;
try {
int result = 10 / 0; // lève une exception
counter = 1;
} catch (ArithmeticException e) {
counter = 2;
} finally {
counter = 3; // s'exécute toujours
}
// counter = 3Essayez vous-même
import java.util.Scanner;
public class Main {
public static String processNumber(String number, boolean shouldThrow) {
// Écrivez votre code ici
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String number = scanner.nextLine();
boolean shouldThrow = Boolean.parseBoolean(scanner.nextLine());
System.out.println(processNumber(number, shouldThrow));
}
}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
1Tableaux multidimensionnels
Bases des tableaux 2DAccès aux éléments des tableaux 2DBoucles imbriquées avec les tableaux 2DRécapitulatif - Tableaux 2DAddition et soustraction de matricesTableaux irréguliersTableaux 3D et au-delàMotifs courants des tableaux 2DRécapitulatif - Tout sur les tableaux4HashSet Partie 1
Qu'est-ce qu'un HashSet ?Ajouter un ÉlémentSupprimer un ÉlémentVérifier si un Élément ExisteVide et TailleVider et ClonerRécapitulatif - HashSet7Gestion des erreurs de base
Bases du try-catchBloc finallyLever des exceptionsExceptions personnalisées2HashMap Partie 1
Qu'est-ce qu'une HashMap ?Déclarer une HashMapAccéder aux ValeursVérifier si une Clé ExisteModifier les DictionnairesRécapitulatif - HashMap3HashMap Partie 2
Méthodes HashMapItérer avec keySet()Itérer avec entrySet()HashMap imbriquéRécapitulatif - Gérer l'entrepôtRécapitulatif - Opérations HashMap6Flux de contrôle avancé
Instructions étiquetéesExpression switchAppariement de motifsClauses de gardeRécapitulatif - Flux de contrôle9Projet - Compteur de Mots Uniques
Entrée de Texte et StockageTraitement des Mots