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

C++ Discussion :

Traitement de toutes les exceptions


Sujet :

C++

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Février 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2008
    Messages : 354
    Points : 139
    Points
    139
    Par défaut Traitement de toutes les exceptions
    Bonjour,
    Je veux traiter toutes les exceptions mais il y a quelques exceptions que je suis pas arrivée à les traiter.
    Y a t il un truc globale permettant de fermer l'application lors de détection d'une exception
    Merci

  2. #2
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 45
    Points : 56
    Points
    56
    Par défaut
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    try
    {
         //ton code
    }
    catch (...)
    {
         //ici tu traite toutes les exceptions
    }
    Si tu veux traiter une exception avant une autre il suffit de placer le catch avant, puis pour quitter ton appli dans le dernier catch avec l'ellipse tu calle un return ou exit et ca devrait suffir je pense.

    j'ai pas tout compris ceux que tu expliquais, donc j'espère que tu n'attendais que ca.
    Bonne soirée

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Février 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2008
    Messages : 354
    Points : 139
    Points
    139
    Par défaut
    merci jroman pour votre réponse mais c'est pas ça ce que je veux exactement.
    J'ai fait try{} catch (exception ex){}. mais le pb est qu'il y a des autres exceptions qui ne sont pas traité. Est ce qu'il y a une solution qui permet de gérer toutes les exceptions. C'est à dire s'il y a des exceptions non gérée alors ce truc permet de fermer l'application.
    Merci

  4. #4
    En attente de confirmation mail

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 391
    Points : 3 311
    Points
    3 311
    Par défaut
    Bonjour,

    Tu peux utiliser ... qui permet de récupérer toutes les autres exceptions. (comme l'a dit jroman)

    Sinon si une exception ne peut être attrapée la fonction std::terminate est appelée, tu peux régler cette fonction avec std::set_terminate, par defaut ca appel abort qui a pour conséquence de terminer assez abruptment le programme (pas d'execution des fonctions de sorties normalement executées par exit, ni des destructeurs des objets).

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Février 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2008
    Messages : 354
    Points : 139
    Points
    139
    Par défaut
    Bonjour,
    Merci Flob90 mais votre réponse n'est pas très clair.
    EN fait je vais expliquer ce que je veux par un exemple dans un projet C++/CLI.
    J'ai fait un try{....} catch (Exception ^ex) {exit(0);}. Lorsque j'ai lancé l'exécution, j'ai trouvé cette exception

    Une exception non gérée du type 'System.ObjectDisposedException' s'est produite dans System.dll

    Informations supplémentaires*: Le handle sécurisé a été fermé

    cette exception est non catché par ce bloc.
    Il y a des autres exceptions qui ne sont pas catché.
    Je veux un truc qui permet de fermer l'application lorsqu'il trouve des exceptions qui ne sont pas catché

  6. #6
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 45
    Points : 56
    Points
    56
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    catch (...)
    {
     
    }
    ce bloc permet de récupérer toutes les exceptions
    Je te met un exemple typique qui vient de mes cours de c++ avec plusieurs types d'exceptions: (CException est une classe propre d'exception codée a part)
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    int main ()
    {
        try
        {
            TestExceptionsInMain();
     
            return KNoExc;
        }
        catch (const CException & E)
        {
            cerr << "Erreur        : " << E.GetLibelle() << '\n' 
                 << "Code d'erreur = " << E.GetCodErr() << '\n';
            return E.GetCodErr();
        }    
        catch (const out_of_range & E)    // levee par string::at()
        {
            cerr << "Exception runtime_error : " << E.what() << '\n'; 
            return KExcStd;
        } 
        */   
        /*
        catch (const runtime_error & E)
        {
            cerr << "Exception runtime_error : " << E.what() << '\n'; 
            return KExcStd;
        } 
        */   
        catch (const exception & E)
        {
            cerr << "Exception standard : " << E.what() << '\n'; 
            return KExcStd;
        }    
        /*
        catch (const unsigned & E)
        {
            cerr << "Exception unsigned : " << E << '\n'; 
            return KExcStd;
        }    
        catch (const int & E)
        {
            cerr << "Exception int : " << E << '\n'; 
            return KExcStd;
        }
        */   
        catch (...)
        {
            cerr << "Exception inconnue\n";
            return KExcInconnue;
        }    
     
    } 
    }
    Voila

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Février 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2008
    Messages : 354
    Points : 139
    Points
    139
    Par défaut
    Merci bien jroman,
    C'est bien ça mais j'ai trouvé que cette exception à partir d'une méthode d'une DLL et j'ai pas le code de cette DLL. Y a t il une solution pour fermer l'application lorsqu'on aura cette exception.
    Merci

  8. #8
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 45
    Points : 56
    Points
    56
    Par défaut
    Je suis désolé mais je vois pas trop ce que tu attends, ou ce que tu ne comprends pas. Tu veux juste que ton programme se termine quand tu chope une exception qui n'est pas une que tu auras listé ? Tu écris dans le bloc catch(...) ton code. Je vois pas trop ce que tu ne comprends pas désolé.

Discussions similaires

  1. Traitement commun à toutes les exceptions
    Par Davboc dans le forum SQL
    Réponses: 12
    Dernier message: 28/08/2007, 09h24
  2. Capturer toutes les exceptions
    Par schneidb dans le forum Interfaces Graphiques en Java
    Réponses: 4
    Dernier message: 13/02/2007, 14h51
  3. [VB.net] MsgBox pour toutes les exceptions
    Par collaud_vb dans le forum Windows Forms
    Réponses: 5
    Dernier message: 06/10/2006, 21h56
  4. [Exceptions]Attraper toutes les exceptions
    Par willowII dans le forum Langage
    Réponses: 4
    Dernier message: 16/08/2006, 19h41
  5. Réponses: 6
    Dernier message: 06/10/2004, 10h41

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