Maison  >  Article  >  Java  >  Une brève introduction à l'instruction try améliorée de Java7 pour fermer les ressources

Une brève introduction à l'instruction try améliorée de Java7 pour fermer les ressources

黄舟
黄舟original
2017-06-04 09:11:401156parcourir

L'éditeur ci-dessous vous proposera un article sur l'instruction try améliorée de java7 pour fermer les ressources. L'éditeur pense que c'est plutôt bien, alors je vais le partager avec vous maintenant et le donner comme référence. Suivons l'éditeur pour jeter un oeil

Instruction d'essai améliorée Java7 pour fermer les ressources

Manière traditionnelle de fermer les ressources

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

class Student implements Serializable {
  private String name;

  public Student(String name) {
    this.name = name;
  }
}

public class test2 {
  public static void main(String[] args) throws Exception {
    Student s = new Student("WJY");
    Student s2 = null;
    ObjectOutputStream oos = null;
    ObjectInputStream ois = null;
    try {
      //创建对象输出流
      oos = new ObjectOutputStream(new FileOutputStream("b.bin"));
      //创建对象输入流
      ois = new ObjectInputStream(new FileInputStream("b.bin"));
      //序列化java对象
      oos.writeObject(s);
      oos.flush();
      //反序列化java对象
      s2 = (Student) ois.readObject();
    } finally { //使用finally块回收资源
      if (oos != null) {
        try {
          oos.close();
        } catch (Exception ex) {
          ex.printStackTrace();
        }
      }
      if (ois != null) {
        try {
          ois.close();
        } catch (Exception ex) {
          ex.printStackTrace();
        }
      }
    }
  }
}

Utilisez le bloc final pour fermer les ressources physiques afin de garantir que l'opération d'arrêt sera toujours exécutée.

Avant de fermer chaque ressource, assurez-vous d'abord que la référence de la variable de référence de la ressource n'est pas nulle.

Utilisez un bloc try...catch distinct pour chaque ressource physique afin de fermer la ressource afin de garantir que les exceptions provoquées lors de la fermeture de la ressource n'affecteront pas la fermeture des autres ressources.

La méthode ci-dessus rend le code du bloc final très volumineux et la lisibilité du programme est réduite.

Java7 instruction d'essai améliorée pour fermer les ressources

Afin de résoudre le problème du téléchargement de manière traditionnelle Question , Java7ajouté une instruction try qui ferme automatiquement les ressources. Il permet à une paire de parenthèses d'être suivie du mot-clé try, dans lequel une ou plusieurs ressources peuvent être déclarées et initialisées. Les ressources font ici référence aux ressources qui doivent être explicitement fermées à la fin du programme (connexions à la base de données, connexions réseau, etc.). .) , l'instruction try fermera automatiquement ces ressources à la fin de l'instruction.

Une instruction try qui ferme automatiquement une ressource équivaut à inclure un bloc final implicite (utilisé pour fermer la ressource), donc cette instruction try ne peut avoir ni un bloc catch ni un bloc final.
public class test2 {
  public static void main(String[] args) throws Exception {
    Student s = new Student("WJY");
    Student s2 = null;
    try (//创建对象输出流
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("b.bin"));
        //创建对象输入流
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("b.bin"));
    )
  {
      //序列化java对象
      oos.writeObject(s);
      oos.flush();
      //反序列化java对象
      s2 = (Student) ois.readObject();
    }

  }
}

Remarque : La ressource qui est automatiquement fermée doit implémenter l'interface Closeable ou AutoCloseable

. (Closeable est une sous-interface d'AutoCloseable. L'instruction de méthode close() dans l'interface Closeeable lève IOException ; l'instruction de méthode close() dans l'interface AutoCloseable lève Exception.) La ressource fermée doit être placée dans Déclaré et initialisé entre parenthèses après l'instruction try. Si le programme dispose d'une instruction try qui doit fermer automatiquement les ressources, il peut inclure plusieurs blocs catch et un bloc enfin.

Java7 a réécrit presque toutes les "classes de ressources" (y compris diverses classes de fichiers IO, JDBC

Programmation

Connexion, Statement et autres interfaces...), et les classes de ressources réécrites implémentent toutes le Interface autofermable ou fermable

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn