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 :

Gérer les Exceptions


Sujet :

C++

  1. #1
    Membre régulier Avatar de Fred2209
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    Points : 105
    Points
    105
    Par défaut Gérer les Exceptions
    Salut,

    J'ai un bloc de mon programme suceptible de créer une erreur, j' ai donc fais ça :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    try
    {
     
    //code...
     
    }
     
    catch (...)
    {
    }
    Et l'erreur se produit quand même et il me dit :

    " toto.exe raised exception class EAccessViolation with message 'Access violation at adress 00408ED6. Read of adress 00AA0000' "

    Est-ce que qu'elqu'un aurait une idée ?

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Quelle plate-forme ?
    Quel EDI ?

  3. #3
    Membre régulier Avatar de Fred2209
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    Points : 105
    Points
    105
    Par défaut
    Sous Windows XP avec Borland C++ Builder

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Connais pas BCB, mais je sais qu'avec la C Run-Time Library version 8, catch(...) ne récupère plus les Access Violation, car ce sont des exceptions Win32 et non de vraies exceptions C++.
    Le comportement précédent est désormais considéré comme un bug.

    Si tu veux récupérer une Access Violation, tu dois utiliser du Structured Exception Handling (SEH) et non le mécanisme d'exceptions de C++.
    Le problème, c'est que je ne sais pas du tout si le SEH marche sous Borland (mais on peut supposer que oui).

  5. #5
    Membre régulier Avatar de Fred2209
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    Points : 105
    Points
    105
    Par défaut
    Merci pour tes conseils...

    Je vais de ce pas faire des recherches...

  6. #6
    Membre régulier Avatar de Fred2209
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    Points : 105
    Points
    105
    Par défaut
    Tu as raison pour ce type d'erreurs c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    try
    {
    }
     
    except()
    {
    }
    Merci pour l'aide...

  7. #7
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Bizarre, dans mes souvenirs le SEH utilisait __try et __except()...
    Mais bon, c'est peut-être Borland qui fait sa cuisine derrière...

  8. #8
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Tu pourrais aussi faire du C++ portable.

  9. #9
    Membre régulier Avatar de Fred2209
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    Points : 105
    Points
    105
    Par défaut
    Tu as raison c'est moi qui les ai zapés, c'est bien __try() et __except().

    Bien vus !

    Par contre je ne connais pas le c++ portable...

  10. #10
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Mais il n'existe aucune façon portable d'intercepter une Access Violation (ou, en termes unixoïdes, une segfault).

    L'autre solution, c'est tout simplement d'écrire du code qui ne plante pas.
    Je recommande cette solution, le SEH n'étant qu'un maigre pis-aller peu acceptable en milieu professionnel...

  11. #11
    Membre régulier Avatar de Fred2209
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    Points : 105
    Points
    105
    Par défaut
    OK d'accord je ne le savais pas....

    Merci pour l'info...

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 29/05/2007, 16h50
  2. Gérer les exceptions de download avec idHTTP
    Par PimpW dans le forum Delphi
    Réponses: 2
    Dernier message: 17/08/2006, 10h23
  3. gérer les exceptions sur les constructeurs?
    Par LESOLEIL dans le forum Général Java
    Réponses: 9
    Dernier message: 15/03/2006, 10h46
  4. gérer les exception
    Par st0nky dans le forum Langage
    Réponses: 10
    Dernier message: 29/11/2005, 19h00
  5. [C#/SQL] Comment gérer les exceptions d'une Procédure stockée ?
    Par thomas_strass dans le forum Accès aux données
    Réponses: 10
    Dernier message: 06/07/2005, 10h40

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