Utiliser l'instruction try-with-resources Java7 pour le traitement de fermeture du curseur

Aperçu

Je vais vous montrer comment utiliser l'instruction ** try-with-resources ** ajoutée dans Java7 pour écrire brièvement le processus de fermeture du curseur utilisé lors de la récupération des valeurs de la base de données.

Code qui utilise l'instruction try-with-resources

try (Cursor c = contentResolver.query(uri, projection, selection, selectionArgs, null)) {
    ... // (Traitement à l'aide du curseur)
}

Si vous écrivez le code pour obtenir les données du fournisseur de contenu à l'aide de l'instruction try-with-resources, vous obtiendrez le code ci-dessus.

Parce que l'instruction try-with-resources appelle automatiquement la méthode Cursor # close () lors de la sortie du bloc à l'intérieur de try. Vous n'avez plus besoin d'appeler explicitement close ().

Que se passe-t-il si vous n'utilisez pas l'instruction try-with-resources

Si vous écrivez le code avec l'instruction try-finally sans utiliser l'instruction try-with-resources, ce sera comme suit.

Cursor c = contentResolver.query(uri, projection, selection, selectionArgs, null);
try {
    ... // (Traitement à l'aide du curseur)
} finally {
    if (c != null) {
        c.close()
    }
}

Le code sera plus long lorsque vous écrivez la clause finally. De plus, comme vous devez vérifier que le curseur n'est pas nul, puis le fermer, En plus d'allonger le code, il y a un risque d'oublier le jugement nul et de provoquer NPE.

Un autre exemple de non-utilisation de l'instruction try-with-resources est le code qui n'utilise même pas l'instruction try, comme ceci:

Cursor c = contentResolver.query(uri, projection, selection, selectionArgs, null);
... // (Traitement à l'aide du curseur) ★
if (c != null) {
    c.close()
}

Le problème avec cette écriture est que le curseur ne sera pas fermé si une exception se produit au niveau de l'étoile. Par conséquent, il vaut mieux l'éviter.

Résumé

Lorsque vous utilisez le curseur, je pense que vous devriez l'écrire dans une instruction try-with-resources. Vous n'avez pas à vous soucier du processus fastidieux, et cela semble être un code concis.

Recommended Posts

Utiliser l'instruction try-with-resources Java7 pour le traitement de fermeture du curseur
Java pour instruction
[Java] pour instruction / étendu pour instruction
(Mémo) Java pour instruction
[Traitement × Java] Comment utiliser les variables
java (utilisez le type de classe pour le champ)
[Traitement × Java] Comment utiliser les tableaux
[Traitement × Java] Comment utiliser la boucle
[Traitement × Java] Comment utiliser la classe
[Traitement × Java] Comment utiliser la fonction
Java, pour instruction / while à partir du débutant
[Java] Que dois-je utiliser pour écrire des fichiers?
Course d'obstacles facile avec traitement pour Java
Utilisez une bibliothèque Java externe pour le moment
Utilisons Java New FileIO! (Introduction, pour les débutants)
Pour l'apprentissage JAVA (2018-03-16-01)
Traitement des threads Java
IDE 2017 pour Java
Traitement des chaînes Java
[Java] Utilisez Collectors.collectingAndThen
[Java] Traitement multi-thread
[Java] Traitement de flux
Instruction de commutation Java
traitement itératif java
[Bases de Java] Créons un triangle avec une instruction for
Comment utiliser Truth (bibliothèque d'assertions pour Java / Android)
Utiliser Watson Conversation comme NLP (Java) (traitement du langage naturel)
J'ai essayé d'utiliser l'instruction Extended for en Java
[Débutant] Variable Java / opérateur logique / étendu pour l'instruction [Note 22]
Comment faire une boucle Java Map (for Each / extended for statement)