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 :

Problème Unhandled exception


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur

    Avatar de Mickael Baron
    Homme Profil pro
    Ingénieur de Recherche en Informatique
    Inscrit en
    Juillet 2005
    Messages
    14 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche en Informatique
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2005
    Messages : 14 974
    Par défaut Problème Unhandled exception
    Bonjour,

    Je préviens je débute en C#.

    Je souhaite intercepter une exception via un bloc try catch. Si mon application est en mode debug et si mon exception est déclenchée, le bloc catch l'intercepte et le traitement associé est réalisé.

    Toutefois, si mon application est en mode release (l'application est déployée) et si mon exception est déclenchée, Windows prend donc la main (une boîte de dialogue apparait avec un message de type Unhandled exception) sur mon application et mon bloc catch ne l'intercepte pas, alors qu'il devrait.

    Ma question est la suivante:
    Comment désactiver le fait que Windows puisse prendre la main quand il y a ce genre de problème.

    Merci d'avance
    Mickael
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Ingénieur de Recherche en informatique au LIAS / ISAE-ENSMA
    Page de Developpez.com : mbaron.developpez.com
    Twitter : www.twitter.com/mickaelbaron
    Blog : mickael-baron.fr
    LinkedIn : www.linkedin.com/in/mickaelbaron
    DBLP : dblp.uni-trier.de/pers/hd/b/Baron:Micka=euml=l

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Par défaut
    Salut,

    Un try/catch doit fonctionner de la même manière en debug et release (tu parles bien de compilation debug et release, pas d'appli lancée avec un debugger ou pas ?). On peut voir à quoi ressemble ton catch ? Il se peut qu'en release ce ne soit pas la même exception qui est lancée ?

    Comment désactiver le fait que Windows puisse prendre la main quand il y a ce genre de problème.
    Pour tte exception non gérée par ton appli, windows prendra forcement la main. Selon le type de ton appli (console, winform, asp.net) tu peux aussi t'abonner auprès d'évènements qui sont levés qd une exception non gérée se produit (voir ici).

  3. #3
    Membre émérite
    Inscrit en
    Octobre 2006
    Messages
    587
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2006
    Messages : 587
    Par défaut
    Dans les 2 cas que ce soit une compilation en mode débug ou en mode release, ça passe par le CLR pour la sécurité (normal sinon à quoi servirait-t-il ?). Pour ce qui est des exceptions, normalement il devrait les rattraper, Windows lui n'a jamais la main sur une exception .NET car elle est toujours gérée par le CLR, c'est peut être dû à un paramètre de compilation.

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Par défaut
    Certes c'est .Net qui cherche dans un premier temps un gestionnaire d'exception managé mais qd il n'en trouve pas toute exception est remontée au niveau au dessus: windows (enfin sauf dans le cas d'une appli asp.net heureusement et peut-être dans certain cas particuliers). Et même si ce n'est pas windows, par ce que je ne maîtrise pas ce qui se passe exactement à ce niveau, c'est au moins un gestionnaire "global" d'exception du CLR qui prend la main et qui termine l'application, ce qui revient au même.

  5. #5
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    Juste comme ça ...
    Pourrais-tu donner un exemple de code où tu penses que le catch n'est pas atteint et le type d'exception levée ?

  6. #6
    Rédacteur

    Avatar de Mickael Baron
    Homme Profil pro
    Ingénieur de Recherche en Informatique
    Inscrit en
    Juillet 2005
    Messages
    14 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche en Informatique
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2005
    Messages : 14 974
    Par défaut
    Bonjour à tous et merci pour les réponses,

    Je viens de re-faire le bout de code de la manière à l'isoler dans une simple application et tout va bien.

    Voici le petit bout de code

    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
    private void button1_Click(object sender, EventArgs e) {
     string aWebServiceAnswer;
     string aXmlFile = "<WEB_SERVICE OPERATION=\"LANGUES\"><SECURITY></SECURITY></WEB_SERVICE>";
     try {
      //Creation d'un instance du service
      localhost.DataEnvironnementService webServicesData = new localhost.DataEnvironnementService();
     
      //Appel d'un service
      aWebServiceAnswer = webServicesData.getLanguages(aXmlFile);
     
      //Affichage de la réponse
      textBox1.Text = aWebServiceAnswer;
     } catch (Exception ex) {
      MessageBox.Show("Erreur avec le web service \n\r" + ex.Message);
     }
    }
    En y réfléchissant par rapport au problème initial, le souci vient peut être du fait que l'appel à ce petit bout de code (qui génère l'exception) se fait à partir d'un thread. Ainsi, dans ce cas, ça ne passe pas.

    Mickael
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Ingénieur de Recherche en informatique au LIAS / ISAE-ENSMA
    Page de Developpez.com : mbaron.developpez.com
    Twitter : www.twitter.com/mickaelbaron
    Blog : mickael-baron.fr
    LinkedIn : www.linkedin.com/in/mickaelbaron
    DBLP : dblp.uni-trier.de/pers/hd/b/Baron:Micka=euml=l

Discussions similaires

  1. Problème Unhandled exception dans un enum
    Par shark59 dans le forum Débuter avec Java
    Réponses: 8
    Dernier message: 05/10/2011, 17h57
  2. unhandled exception class System.SecurityException
    Par the big ben 5 dans le forum Langage
    Réponses: 2
    Dernier message: 02/11/2005, 17h41
  3. unhandled exception
    Par PRUVOT dans le forum MFC
    Réponses: 4
    Dernier message: 27/10/2005, 08h57
  4. [SimpleDateFormat] problème d'exception
    Par julienOriano dans le forum Collection et Stream
    Réponses: 8
    Dernier message: 12/07/2004, 17h01
  5. Réponses: 5
    Dernier message: 12/06/2002, 15h12

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