IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Le bloc finally


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 152
    Par défaut Le bloc finally
    Bonjour,
    Juste une petite question à propos du bloc finally{} à la suite d'un try{} catch{}.
    Je sais que ce bloc est utilisé pour faire des choses comme fermeture d'un fichier ouvert ou une connexion à une base de données.....
    Moi, je me dis et puisque le code qui suit le bloc catch{} sera exécuté même s'il y a une exception, c'est l'utilité même de la capture des exceptions, je dis que l'on peut à la suite de ça fermer les flux ouverts en faisant par exemple un test si la ressource est fermée ou pas. Donc, on peut se passer de finally?
    Est-ce que vous avez un cas qui justifie l'utilisation de ce bloc?
    Je vous remercie par avance.

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 096
    Par défaut
    Le code qui suit sera executé si et seulement si il n'y a pas de throw dans un des catch.
    Dans le cas contraire il sera executé, après ca sera une question de gout, mais pas prudence il vaut mieux faire les choses dans le finally.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    try
    {
    // 1. j'arrive ici
    // 2. ca provoque une exception
    }
    catch(Exception e)
    {
    // 3. J'arrive ici
    throw e; // Je m'en vais
    }
    // 4. le reste ici ne sera jamais executé on est sorti de la méthode.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 152
    Par défaut
    Citation Envoyé par wax78 Voir le message
    Le code qui suit sera executé si et seulement si il n'y a pas de throw dans un des catch.
    Dans le cas contraire il sera executé, après ca sera une question de gout, mais pas prudence il vaut mieux faire les choses dans le finally.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    try
    {
    // 1. j'arrive ici
    // 2. ca provoque une exception
    }
    catch(Exception e)
    {
    // 3. J'arrive ici
    throw e; // Je m'en vais
    }
    // 4. le reste ici ne sera jamais executé on est sorti de la méthode.
    Je te remercie par ta réponse rapide.
    Dans ton cas c-à-dire avec throw e, si on met à la place de 4. un bloc finally, sera-t-il exécuté? merci

  4. #4
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 096
    Par défaut
    Oui

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    try
    {
    // 1. j'arrive ici
    // 2. ca provoque une exception
    }
    catch(Exception e)
    {
    // 3. J'arrive ici
    throw e; // Je m'en vais
    }
    finally
    {
    // 4. Ton code sera executé
    }
    // 5. Pas ici
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 152
    Par défaut
    Citation Envoyé par wax78 Voir le message
    Oui

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    try
    {
    // 1. j'arrive ici
    // 2. ca provoque une exception
    }
    catch(Exception e)
    {
    // 3. J'arrive ici
    throw e; // Je m'en vais
    }
    finally
    {
    // 4. Ton code sera executé
    }
    // 5. Pas ici
    C'est sympa de ta part.
    On peut dire que c'est de la bonne manière pour coder?

  6. #6
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Salut,
    non on peut pas . Tout dépend de ce que tu as à faire.

  7. #7
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 690
    Par défaut
    Citation Envoyé par allouchi Voir le message
    C'est sympa de ta part.
    On peut dire que c'est de la bonne manière pour coder?
    Si tu as des ressource a libérer, oui il faut normalement le faire dans un bloc finally.

    À noter que Java 7 a introduit une nouvelle fonctionnalité : le try-with-ressources qui permet de libérer les ressources automatiquement, et donc de se passer du bloc finally dans la plupart des cas.

  8. #8
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 152
    Par défaut
    Merci à vous tous.
    C'est clair pour moi.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 20
    Dernier message: 30/08/2012, 11h35
  2. Réponses: 6
    Dernier message: 25/10/2006, 11h22
  3. Interet bloc Finally
    Par Seth77 dans le forum Langage
    Réponses: 7
    Dernier message: 11/10/2006, 11h43
  4. [VB6] mise en commentaire d'un bloc de code
    Par JuanDeLaPlaya dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 30/04/2003, 15h05
  5. Périphérique de bloc
    Par MAGNUM_HEAD dans le forum Administration système
    Réponses: 4
    Dernier message: 20/03/2003, 19h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo