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

 .NET Discussion :

try {/* code */} catch (ex) { throw ex; }


Sujet :

.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de mioux
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2005
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2005
    Messages : 369
    Par défaut try {/* code */} catch (ex) { throw ex; }
    Bonjour.

    Est ce que quelqu'un peut m'expliquer l'intérêt d'un tel code ?

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    try
    {
        //....
    }
    catch (Exception ex)
    {
        throw ex;
    }

    J'ai beau chercher à comprendre, à part perturber le débugger je ne vois pas l'intérêt. Quelqu'un pour m'éclairer ?

  2. #2
    Membre Expert
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Par défaut
    Tel quel ce code ne sert à rien.
    Le Try Catch permet de récupérer les exceptions faite par le code et de les gérer ensuite.

    Il faut éviter si possible de récupérer les Exception. Il vaut mieux tenter de spécialiser le type d'exception à gérer (IOException, FileNotFoundException, etc.)

  3. #3
    Membre émérite Avatar de bizet
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2005
    Messages
    717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 717
    Par défaut
    salut

    On suppose que dans ton application, tu n'as pas envie que l'utilisateur final sache que l'application plante car le fichier dans lequel tu veux ecrire rencontre un probleme concernant les droits / fichier déjà ouvert,..

    Pour cela tu créé une Exception personnalisée MyException qui renvoie le message d'erreur suivant : "Erreur applicative".

    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
     
    try
    {
       //Acces a mon fichier
    }
    //Exception qui n'existe pas mais cest juste pr l'exemple.
    catch (IOException ex)
    {
        throw MyException;
    }
    //Exception qui n'existe pas mais cest juste pr l'exemple.
    catch (FileException ex)
    {
        throw MyException;
    }
    catch(Exception ex)
    {
     throw GenericException
    }
    Les catch sont là pour attraper les erreurs que peut rencontrer ton code qui se trouve dans le try.
    throw permet de "créer" une nouvelle Exception que tu peux définir comme tu veux.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Tel quel, il ne fait rien d'utile, et fait même quelque chose de nuisible vu que throw ex réinitialise la pile de l'exception, si bien qu'on ne sait plus d'où vient l'erreur de départ... il faut faire throw tout court pour éviter ça.

    Le seul intérêt d'écrire ce genre de code, c'est pour le debug: tu peux mettre un breakpoint dans le catch pour examiner l'exception

  5. #5
    Membre Expert
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Par défaut
    Je ne suis pas vraiment d'accord avec toi tomlev. Pour moi faire un throw tout court ne sert non plus à rien.
    Les Try Catch sont assez gourmand en ressources, il faut donc les utiliser à bon escient. Il est inutile de créer un code de gestion d'erreur juste pour dire. Il faut savoir ce que l'on va en faire.

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par jbrasselet Voir le message
    Je ne suis pas vraiment d'accord avec toi tomlev. Pour moi faire un throw tout court ne sert non plus à rien.
    Je n'ai pas dit que throw tout court était plus utile, j'ai juste dit que ça évitait de réinitialiser la pile de l'exception, et donc de perdre des infos sur l'erreur. Mais c'est effectivement tout aussi inutile...

    Citation Envoyé par jbrasselet Voir le message
    Les Try Catch sont assez gourmand en ressources, il faut donc les utiliser à bon escient. Il est inutile de créer un code de gestion d'erreur juste pour dire. Il faut savoir ce que l'on va en faire.
    Ce n'est pas le try/catch qui est gourmand en ressource, mais juste le traitement de l'exception. Tant qu'aucune exception n'est levée, ce n'est pas pénalisant d'avoir un try/catch (*) ; et à partir du moment où une exception se produit, la petite perte de performance n'a plus vraiment d'importance...

    (*) du moins tant que le corps du try n'est pas trivial. Si c'est juste 1 ou 2 instructions très simples, on observe une petite différence, qui s'estompe dès que le corps du try est un peu plus complexe

  7. #7
    Membre Expert
    Avatar de jbrasselet
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mars 2006
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 022
    Par défaut
    Merci de la précision sur les ressources. ON dirait que je n'avais pas très bien capté le truc

Discussions similaires

  1. try multiple catch silencieux
    Par CedricMocquillon dans le forum Boost
    Réponses: 9
    Dernier message: 06/03/2012, 23h44
  2. Erreurs avec try et catch
    Par ebenmous dans le forum Général Java
    Réponses: 2
    Dernier message: 10/08/2011, 11h11
  3. [Débutant] Instruction try and catch
    Par Asmlibero dans le forum MATLAB
    Réponses: 2
    Dernier message: 19/01/2009, 10h37
  4. probleme avec try et catch
    Par salsero1 dans le forum Struts 1
    Réponses: 2
    Dernier message: 15/11/2007, 08h02
  5. UTILISATION DE TRY et CATCH
    Par demcoul dans le forum JBuilder
    Réponses: 1
    Dernier message: 15/04/2006, 15h01

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