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 Exception


Sujet :

C#

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 55
    Points : 42
    Points
    42
    Par défaut Try Catch Exception
    Bonjour tout le monde,

    Ma question porte sur la gestion des erreurs. J'ai le code suivant (pas la peine de vous cassez la tête à le comprendre) :

    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    foreach (object obj in inboxFolder2.Items)
                    {
                        MailItem item = obj as MailItem;
     
                        if (item != null & !item.Subject.ToLower().Contains("erratum"))
                        {
                            if (item.ReceivedTime >= DateTime.Today)
                            {
                                Dictionary<String, int> index = new Dictionary<string, int>();
                                int pos = 0;
                                string result = "";
                                String[] ElementsToSearch = new String[] { "ouverture", "open", "suite", "relance", "follow", "reminder", "fermeture", "closed", "closure" };
     
                                foreach (String s in ElementsToSearch) // On boucle sur tous les éléments
                                {
                                    pos = item.Subject.ToLower().IndexOf(s); // Insertion de la position dans l'index
                                    if (pos != -1)                       // Si on trouve on insert
                                        index.Add(s, pos);
                                }
                                if (index.Count <= 0) // Si rien trouvé
                                    result = "";
                                else
                                    result = index.OrderBy(i => i.Value).First().Key; // On retourne le premier dans la chaine
     
                                if (result == "ouverture" | result == "open")
                                {
                                    ouverture++;
                                }
                                if (result == "suite" | result == "relance" | result == "follow" | result == "reminder")
                                {
                                    suite++;
                                }
                                if (result == "fermeture" | result == "closed" | result == "closure")
                                {
                                    fermeture++;
                                }
     
                                if (item != null & item.ReceivedTime >= DateTime.Today)
                                {
                                    for (int i = 0; i < dataContext.DT.Rows.Count; i++)
                                    {
                                        if (item == null) { }
                                        else if (item.Subject.ToLower().Contains(dico[0, i].ToLower())) //S'il dans la gridview
                                        {
                                            int t = 0;
                                            if (dico[1, i] == null) { t = 0; }
                                            else
                                            {
                                                t = Int32.Parse(dico[1, i]);
                                            }
                                            t++;
                                            dico[1, i] = t.ToString();
                                        }
                                    }
                                }
                            }
                            else
                            {
                                break;
                            }
                        }
                    }
                }
    Si vous ne comprenez pas le code ce n'est pas très grave. Mais il lève une erreur "NullPointerException" j'ai donc ajouté cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    try
                {
                 foreach (object obj in inboxFolder2.Items)
                 [...]
                }
    catch
                {
                }
    Mes questions :

    - Est ce que toutes les exceptions seront levés (et pas seulement null)?
    - Une fois l'erreur levée on passe à la suite ou je peux retourne dans mon try?

    Merci d'avance,

  2. #2
    Membre éclairé Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 612
    Points : 685
    Points
    685
    Par défaut
    Une chose est sûre, c'est que si tu mets ton foreach dans le try, à la première exception tu sors du try, donc également du foreach...

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 222
    Points : 110
    Points
    110
    Par défaut
    Si je ne me trompe pas, tu vas catché là toutes les exceptions qui remontent de ton foreach...du coup, il sera terminé et tu ne pourras plus y revenir...

    Il faudrait plutot faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    foreach( ......)
    {
        try
       {
            ///Ton traitement
     
       }
       catch( /* le type d'exception que tu veux catché */ )
       {
          continue; //passer à l'élement suivant de boucle
       }
    }
    Bon, cela n'est pas super optimisé car un try-catch à chaque tour de boucle, c'est assez crade... Le mieux serait de faire tous les tests nécessaires sur ton objet avant de t'en servir pour éviter qu'il lève une exception...

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 55
    Points : 42
    Points
    42
    Par défaut
    Citation Envoyé par alexadvance Voir le message
    Le mieux serait de faire tous les tests nécessaires sur ton objet avant de t'en servir pour éviter qu'il lève une exception...
    Tu as totalement raison c'est d'ailleurs la solution que j'ai trouvée !!! J'ai fait un test dans mon foreach pour checker si = null si sujet = null ...etc comme cela pas besoin de mettre les block try catch.

    Merci à vous

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

Discussions similaires

  1. try catch exception
    Par gaut02 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 21/03/2009, 15h42
  2. Code erreur d'un Try, Catch (exception e)
    Par davelop dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 06/10/2008, 19h00
  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