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

Qt Discussion :

Gestion des exceptions avec le mécanisme de signaux et slots


Sujet :

Qt

  1. #1
    Membre averti
    Avatar de Niak74
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    271
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 271
    Points : 333
    Points
    333
    Par défaut Gestion des exceptions avec le mécanisme de signaux et slots
    Bonjour,



    J'ai une application avec un try/catch englobant le QApplication::exec.

    Si je throw une exception dans la phase de construction des éléments de mon application, aucun problème, on remonte la stack jusqu'au try/catch et tout se passe normalement.

    Par contre, si le throw a lieu après réponse à un événement (ex : click souris sur un button QML qui appelle un Q_INVOKABLE C++ ou un slot via connexion de signaux), le programme crash. En debuggant, je m'aperçois qu'on est bien dans le thread principal, mais qu'on n'a plus accès à la stack initiale, le try est alors "hors de portée", l'exception n'est donc pas gérée.

    Le bug n’apparaît pas sous win8 où on atteint bien le try/catch...

    Une idée de ce qu'il se passe ?
    Un clavier Azerty en vaut deux.

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Le bogue apparait sur quel système ?
    Quel compilateur utilisez vous ?
    Il se peux qu'il y ai une différence de gestion des exceptions entre vos compilateurs.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre averti
    Avatar de Niak74
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    271
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 271
    Points : 333
    Points
    333
    Par défaut
    La compilation est faite en x64/Release avec msvc2013.

    Le problème apparaît sous W7 où je n'atteins pas QApplication::exec() en remontant la stack.

    Je suis en train de contourner le problème en factorisant l'appel à des fonctions pouvant générer des exceptions dans une lambda, avec le contrôle d'exception qui me va bien.

    Je suis en fait étonné de voir ce comportement, mais je sais que Qt et les exceptions ne font pas bon ménage... donc...
    Un clavier Azerty en vaut deux.

Discussions similaires

  1. Gestion des exceptions avec JSF RI 1.2
    Par darsky dans le forum JSF
    Réponses: 5
    Dernier message: 12/11/2008, 12h25
  2. Gestion des exceptions avec le plugin ErrorHandler ?
    Par AzAt0th dans le forum Zend Framework
    Réponses: 7
    Dernier message: 07/01/2008, 14h31
  3. [POO] Gestion des exception avec php4
    Par mulot49 dans le forum Langage
    Réponses: 1
    Dernier message: 26/04/2007, 10h18
  4. Réponses: 2
    Dernier message: 01/12/2006, 19h55
  5. [vb.net]Gestion des exceptions avec les web services
    Par mvr dans le forum Windows Forms
    Réponses: 2
    Dernier message: 05/12/2005, 22h41

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