Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Java

Maîtriser le try-with-resources Java : gestion automatique des ressources expliquée

Maîtriser le try-with-resources Java

Explorez comment l'instruction try-with-resources de Java simplifie la gestion des ressources, prévient les fuites et améliore la lisibilité du code.

La construction try‑with‑resources garantit que toutes les ressources déclarées dans ses parenthèses sont automatiquement fermées quand le bloc se termine, que ce soit normalement ou brutalement. Une ressource est tout objet implémentant AutoCloseable ou Closeable.

Sa syntaxe est :

try (ResourceType resource = new ResourceType(...)) { // utiliser la ressource } catch (ExceptionType e) { // gérer exceptions } 

Pour l'utiliser, vous :

  1. Instanciez la ressource dans la clause try.
  2. Déclarez la gestion d'exceptions pour toute erreur qui peut survenir pendant l'utilisation ou la fermeture.
Note : Seuls les objets implémentant AutoCloseable peuvent être gérés automatiquement.


Exemple 1 : Lecture de fichier en toute sécurité

import java.io.*; public class Main { public static void main(String[] args) { try (BufferedReader br = new BufferedReader(new FileReader("test.txt"))) { String line; while ((line = br.readLine()) != null) { System.out.println("Line =>" + line); } } catch (IOException e) { System.out.println("IOException in try‑with‑resources block =>" + e.getMessage()); } } } 

Sortie si test.txt est manquant :

IOException in try‑with‑resources block =>test.txt (No such file or directory)

Sortie quand le fichier existe :

Line =>test line

Ici, le BufferedReader est fermé automatiquement après le bloc, éliminant le besoin d'une clause finally.


Exceptions supprimées

Quand le bloc try et la fermeture de ressource lancent tous deux des exceptions, l'exception du bloc try prend la priorité, tandis que l'autre est supprimée. Vous pouvez récupérer les exceptions supprimées via Throwable.getSuppressed() :

catch (IOException e) { System.out.println("Thrown exception =>" + e.getMessage()); for (Throwable t : e.getSuppressed()) { System.out.println("Suppressed exception =>" + t); } } 

Pourquoi utiliser try-with-resources ?

1. Élimine le nettoyage manuel

Avant Java 7, un bloc finally était obligatoire pour fermer les ressources. Cela ajoutait du boilerplate et le potentiel de try‑catch imbriqués dans le finally si la fermeture lançait elle-même une exception. Avec try-with-resources, le nettoyage est implicite :

BufferedReader br = null; try { br = new BufferedReader(new FileReader("test.txt")); // utiliser br } catch (IOException e) { // gérer } finally { if (br != null) { try { br.close(); } catch (IOException ignored) {} } } 

Le motif ci-dessus est plus verbeux et sujet aux erreurs comparé à :

try (BufferedReader br = new BufferedReader(new FileReader("test.txt"))) { // utiliser br } 

2. Plusieurs ressources dans une instruction

Déclarez plusieurs ressources séparées par des points-virgules. Elles sont fermées dans l'ordre inverse de la déclaration.

try (Scanner scanner = new Scanner(new File("testRead.txt")); PrintWriter writer = new PrintWriter(new File("testWrite.txt"))) { while (scanner.hasNext()) { writer.print(scanner.nextLine()); } } 

3. Amélioration Java 9

Java 9 a assoupli l'exigence que les ressources soient déclarées localement. Vous pouvez maintenant réutiliser une variable existante :

Scanner scanner = new Scanner(new File("testRead.txt")); try (scanner) { // code } 

Cette fonctionnalité améliore la lisibilité quand la même ressource est nécessaire ailleurs.


Pour des insights plus profonds, référez-vous à la documentation officielle AutoCloseable et aux notes de version Java 9 JEP 326.

Java

  1. Maîtriser les opérateurs Java : Types, syntaxe et exemples pratiques
  2. Commentaires Java : Types, utilisation et bonnes pratiques
  3. Maîtriser la boucle for améliorée en Java : Syntaxe, exemples et bonnes pratiques
  4. Maîtriser les chaînes de caractères en Java : Création, méthodes et bonnes pratiques
  5. Maîtriser les interfaces Java : concepts, implémentation et bonnes pratiques
  6. Maîtriser les classes internes anonymes en Java : définition, syntaxe et exemples pratiques
  7. Annotations Java expliquées : types, placement et exemples pratiques
  8. Assertions Java : guide pratique pour détecter les bugs et assurer la fiabilité du code
  9. Comprendre Java Vector : Utilisation, Fonctionnalités et Comparaison avec ArrayList