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

Langages de programmation Discussion :

Try Catch et "Finally"


Sujet :

Langages de programmation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 5
    Par défaut Try Catch et "Finally"
    Bonjour bonjour,

    Petite question que je me pose depuis longtemps.
    Je ne sais pas si je suis dans la bonne section, mais vue que ca marche dans plein de languages,
    De manière générale je voudrais savoir la différence entre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    try
    {
    ....
    }
    catch(...)
    {
    ....
    }
    ....
    des instructions
    ....
    ET

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    try
    {
    ....
    }
    catch(...)
    {
    ....
    }
    finally
    {
    ....
    des instructions
    ....
    }
    Vous allez me dire: "oui mais finally est 'toujours executé'". Mais dans le premier cas, les instructions sous le try catch ne le seront elles pas ?

    A part peut etre si on met des 'throw' dans le catch (et encore, je vois pas l'interet de faire ca, vue que ce bloc sert justement à recuperer une exception, et pas à en relancer), je vois pas du tout a quoi sert le bloc finally.

    J'avoue que je suis perplexe

    merci d'avance pour votre aide
    Fiascototal

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 277
    Par défaut
    Comme tu l'as si bien dit, le bloc finally sera obligatoirement exécuté, même s'il y a un throw exception ou un return dans le catch.
    Cela te permet par exemple d'être certain que tes flux seront bien fermés.

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    432
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 432
    Par défaut
    Ou encore si une exception est lancee dans le bloc try sans etre recuperee dans aucun catch.

  4. #4
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 5
    Par défaut
    Ok, merci beaucoup

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Par défaut
    A noter qu'un langage comme le C++ n'a pas de clause "finally" car les objets ont des destructeurs appelés automatiquement.

  6. #6
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    Citation Envoyé par nikko34 Voir le message
    A noter qu'un langage comme le C++ n'a pas de clause "finally" car les objets ont des destructeurs appelés automatiquement.
    En gros, c'est pour faire du RAII de façon super moche ?
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

Discussions similaires

  1. Try Catch Finally et Return
    Par melleb dans le forum C#
    Réponses: 21
    Dernier message: 28/07/2011, 12h30
  2. Réponses: 3
    Dernier message: 12/12/2006, 18h58
  3. Réponses: 13
    Dernier message: 03/08/2006, 16h31

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