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 :

qu'est ce que le try catch?


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 61
    Par défaut qu'est ce que le try catch?
    bien le bonjour je souhaiterai avoir votre avis sur l'utilisation du try catch dans un developpement?
    on m'a dit que c'était une chose merveilleuse mais je souhaiterai avoir l'avis aiguisé de développeurs de renommé.
    merci d'avance ++

  2. #2
    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

  3. #3
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    une recherche sur n'a jamais tué personne !!!!

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 154
    Par défaut
    Le try catch est une structure tres utile qui te permet de tester un bout de code et si ce traitement gènère une erreure, tu l'a recupère pour faire un autre traitement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    try 
    {
    //ton code
    }
    catch (une exception pour quelquechose de précis, ou toutes les exceptions)
    {
    le traitement à faire si tu attrape une execption.
    }

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 700
    Par défaut
    Plus généralement tu t'apercevras que le try catch est impératif pour tout ce qui touche aux entrées / sorties, de toute sorte : accès fichier, accès bdd, nouveau process, etc. Bref, tout ce dont tu ne peux pas être 100% sur de son état.

    Pour ce qui est à l'intérieur, tu n'es pas censé en avoir car tu te dois de le maitriser (On ne va pas mettre de NullReferenceException partout -_-)
    Les Entrées utilisateurs n'ont pas besoin de try catch, tu dois pouvoir vérifier ses entrées automatiquement et ne pas attendre d'erreur (par exemple utiliser TryParse() que Parse() pour les valeurs, etc. )

    Tu dois éviter au maximum d'intercepter "volontairement" une exception. ex : tu n'attends pas que l'exception FileNotFoundException se déclenches : tu tests d'abord l'existence du fichier, et ensuite tu encapsules le traitement dans un try catch, ou evidemment tu interceptes quand même l'exception : car évidemment entre le test d'existence et le traitement, le fichier peut disparaitre : c'est à ce moment que l'exception devient "imprévisible"

    L'exception est donc là pour gérer un cas inattendu / imprévisible.
    Donc, rare sont les programmes sans try catch


    C'est une partie assez complexe la gestion des exceptions, et ca demande de l'expérience. Et comme ca prend du temps face au impératif du moment, c'est souvent baclé...
    Je ne pense pas tout gérer convenablement, mais je sais que je fais bien plus attention qu'il y a quelques mois

  6. #6
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    C'est une partie assez complexe la gestion des exceptions, et ca demande de l'expérience. Et comme ca prend du temps face au impératif du moment, c'est souvent baclé...
    Pas très long pourtant un try catch.
    Perso j'attrape les exceptions et je les met dans un fichier log.
    Après plus qu'à gérer l'instabilité potentielle qui pourrait survenir sur l'application. En fait cela reviens à classer les exceptions en deux cas :
    - Les fatals -> on arrête l'appli et on libères les ressources.
    - Les autres -> l'appli peut fonctionner, mais on coupe certaine fonctionnalité.

    Dans les deux cas il faut prévoir un système d'alerte pour informer de l'état du programme.

  7. #7
    Membre très actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Par défaut
    ce bout de code pourra, je l'espere, t'aider a comprendre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    int a = 15;
    int b = 0;
    try
    {
      int c = a/b; // b vaut 0 (division impossible)
    }
    catch(DivideByZeroException)
    {
     // recuperation de l'erreur
     MessageBox.Show("Impossible de diviser par zéro");
    }
    sans ce try catch, le code se serait planté!

  8. #8
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Citation Envoyé par fally Voir le message
    ce bout de code pourra, je l'espere, t'aider a comprendre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    int a = 15;
    int b = 0;
    try
    {
      int c = a/b; // b vaut 0 (division impossible)
    }
    catch(DivideByZeroException)
    {
     // recuperation de l'erreur
     MessageBox.Show("Impossible de diviser par zéro");
    }
    sans ce try catch, le code se serait planté!
    Si tu test que b est différent de 0 avant de faier la division, tu n'as aps de plantage.
    Et avoir 0 pour b c'est quelque chose à quoi tu peux t'attendre.

    Un meilleur exemple :
    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
    if (!Directory.Exist("c:\\temp"))
    {
       Directory.CreateDirectory("c:\\temp");
    }
     
    Try
    {
       StreamReader sr = File.CreateText("c:\\temp\\toto.txt");
       sr.WriteLine("blabla");
       sr.Flush();
       sr.close();
       if(File.Exist("c:\\temp\\toto.txt"))
       {
          File.Move("c:\\temp\\toto.txt", "c:\\temp2\\titi.txt");
       }
    }
    Catch(FileNotFoundException)
    {
         //Fait ce que tu dois faire !!!!
    }
    Catch(DirectoryNotFoundException)
    {
         //Fait ce que tu dois faire !!!!
    }
    Finally
    {
       //Le code indipensable à faire, et que tu veux être sur qu'il soit fait
    }
    Finally t'assure que quoi qu'il se passe, le code qui est dans finally sera exécuté.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 61
    Par défaut
    Citation Envoyé par ced600 Voir le message
    une recherche sur n'a jamais tué personne !!!!
    simpa ta remarque...............
    sinon merci pour ceux qui on répondu de manière constructive
    je comprend ainsi mieux l'utilisation qui doit en etre fait.
    au fait Chubyone c'est il.
    merci a vous ++

  10. #10
    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
    ?

  11. #11
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Citation Envoyé par shyx21 Voir le message
    simpa ta remarque...............
    Merci, il n'y a aucun problème, j'aime bien rappeler certaine évidence, surtout à ceux qui les oublis

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/06/2015, 17h20
  2. Réponses: 15
    Dernier message: 26/10/2011, 11h28
  3. Try, catch, comment est ce que la machine virtuelle gerre ca ?
    Par Djobird dans le forum Général Java
    Réponses: 7
    Dernier message: 11/06/2009, 12h07
  4. Réponses: 3
    Dernier message: 13/12/2006, 16h01
  5. Réponses: 3
    Dernier message: 19/07/2002, 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