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 les 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 lever 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 va lever une exception
counter = 1;
} catch (ArithmeticException e) {
counter = 2;
} finally {
counter = 3;
// Ceci s'exécutera toujours
}Après avoir exécuté le code ci-dessus, counter contient :
3
Le type entre les parenthèses de catch détermine les erreurs que ce bloc gère. Deux types courants sont ArithmeticException, déclenchée par une division entière par zéro, et NumberFormatException, déclenchée par Integer.parseInt() lorsque le texte n’est pas un nombre. Un seul catch peut gérer plusieurs types à la fois :
try {
int value = Integer.parseInt(text);
int result = 10 / value;
} catch (ArithmeticException | NumberFormatException e) {
// gère les deux
} finally {
// s'exécute toujours
}Intercepter Exception est plus général : cela gère ces deux exceptions ainsi que toute autre exception.
Défi
FacileCréez une méthode nommée processNumber qui prend deux arguments :
- Un String (
number) à convertir en entier - Un booléen (
shouldThrow) qui détermine si une exception doit être levée
La méthode doit :
- Initialiser une variable de résultat à 0
- Dans le bloc try :
- Si shouldThrow vaut true, diviser 10 par 0
- Sinon, convertir la chaîne number en entier et la stocker dans result
- Dans le bloc catch : définir result sur -1
- Dans le bloc finally : ajouter 100 à result
- Retourner result sous forme de chaîne
Essayez 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 MotsEntraînez-vous par vous-même : Compilateur Java en ligne