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 :

Try catch finaly afficher l'exception


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 254
    Par défaut Try catch finaly afficher l'exception
    Bonjour, dans mon application je souhaite afficher un message d'erreur dans le cas ou il y a une erreur en utilisant try catch finaly, mon code compile et fonctionne mais je n'ai pas de message qui s'affiche lors de l'erreur.
    Pour tester mon code j'ai créer une erreur dans le chemin d'enregistrement de l'image
    Le finaly fonctionne car le BtImage est bien désactivé.
    Merci pour vos renseignements.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
                    }
                    System.IO.Directory.CreateDirectory(DirectorySaveTested);
                    FileSave = Path.Combine(DirectorySaveTested, "Image.jpg");
                    b.Save(FileSave);
                }
                catch (NullReferenceException ex)
                {
                   MessageBox.Show("L'accès à l'ecriture sur le bureau est impossible",ex);
                }
                finally
                {
                    this.BtImage.Enabled = false;
                }

  2. #2
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Dans ton code tu catch juste les exception du type NullReferenceException. Donc si l'exception levée n'est pas de ce type tu ne passeras pas dans le catch.

    Pour attraper toutes les exceptions tu peux faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ...
    catch (Exception ex)
    {
        MessageBox.Show("L'accès à l'ecriture sur le bureau est impossible",ex);
    }
    ...

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 254
    Par défaut
    Bonjour StormimOn,
    J'avais tester la même chose mais le compilo me remonte 2 erreurs :

    Erreur 1 La méthode surchargée correspondant le mieux à 'System.Windows.Forms.MessageBox.Show(string, string)' possède des arguments non valides

    Erreur 2 Argument '2'*: impossible de convertir de 'System.Exception' en 'string'

  4. #4
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Par défaut
    Bonjour,

    il n'y a pas de méthode prenant en argument une Exception comme second argument...

    Il faut écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    catch (Exception ex)
    {
        MessageBox.Show("L'accès à l'ecriture sur le bureau est impossible.", ex.GetType().ToString());
    }
    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 254
    Par défaut
    Bonjour Arnaud F. merci de ton aide, ça compile sans erreur mais ça ne fonctionne pas, j'ai volontairement créer une erreur dans le chemin d'enregistrement de DirectorySaveCapture et le résultat est que BtCaptureEcran est désactiver sans message d'erreur.
    Je suis débutant et ne maitrise pas bien le try Catch Finaly mais je ne dois pas être trop loin compte.

    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
            private void BtCaptureEcran_Click(object sender, EventArgs e)
            {
     
                    Bitmap b = new Bitmap(SystemInformation.VirtualScreen.Width, SystemInformation.VirtualScreen.Height);
                    Graphics g = Graphics.FromImage(b);
                    g.CopyFromScreen(0, 0, 0, 0, b.Size);
                    g.Dispose();
                    b.MakeTransparent();
                    Screen = b;
                    b.Save("Image ", ImageFormat.Jpeg);
                    //Enregistrement de la capture sur le bureau
                    try
                    {
                        String DirectorySaveTested = DirectorySaveCapture;
                        while (System.IO.Directory.Exists(DirectorySaveTested))
                        {
                            DirectorySaveTested = DirectorySaveCapture + cpt;
                            cpt++;
                        }
     
                        System.IO.Directory.CreateDirectory(DirectorySaveTested);
                        FileSave = Path.Combine(DirectorySaveTested, "Image.jpg");
                        b.Save(FileSave);
                        this.TemoinCaptureEcran.BackColor = System.Drawing.Color.Green;
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("L'accès à l'ecriture sur le bureau est impossible.", ex.GetType().ToString());
                    }
                    finally
                    {
                        this.BtCaptureEcran.Enabled = false;
                        this.TemoinCaptureEcran.BackColor = System.Drawing.Color.Red;
                    }
     
            }

  6. #6
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    On passe toujours dans le bloc finally, qu'il y ait eu une exception ou non, il faut lire la documentation
    Ce bloc est généralement utilisé pour libérer les ressources.

Discussions similaires

  1. [POO] Exception et "try catch"
    Par XenoDeus dans le forum Langage
    Réponses: 6
    Dernier message: 04/02/2008, 09h31
  2. Réponses: 4
    Dernier message: 24/10/2007, 12h16
  3. probleme try catch, Exception
    Par Slumpy dans le forum VB.NET
    Réponses: 9
    Dernier message: 23/03/2007, 15h51
  4. [Système] Exception: try / catch
    Par canabral dans le forum Langage
    Réponses: 2
    Dernier message: 05/09/2006, 12h28
  5. Exception & Try..catch
    Par PurL dans le forum C++Builder
    Réponses: 2
    Dernier message: 11/12/2002, 15h35

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