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

avec Java Discussion :

[Informations] Comment fonctionne le Try - Catch


Sujet :

avec Java

  1. #1
    Membre régulier Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Points : 123
    Points
    123
    Par défaut [Informations] Comment fonctionne le Try - Catch
    Bonjour tout le monde,

    Je viens une fois de plus vous demander de l'aide, des explications et des informations.

    Je cherche à comprendre le fonctionnement du try/catch. Pourquoi me diriez-vous ? Et bien pour l'utilisé dans mes classes de façon optimisé et pratique. J'aimerais aussi ne pas me contenté de placé (lorsque une réponse se fait sur un forum) de codé sans savoir à quoi ça sert et comment ca s'utilise. En parallèle je suppose (mais je ne suis pas sûr de mon coup) que c'est utile et pratique et que je pourrait faire moult actions avec ce petit système.

    J'aimerais, si c'est possible, profiter d'un peu de votre expérience pour comprendre. J'ai imaginé pour ce cas un simple exemple.

    Exemple :
    Mettons que je veuille accéder à un fichier exemple.txt placé sous /home/nom/test/exemple.txt et que celui-ci n'est pas disponible en droit comme en présence. Et bien j'aurais normalement droit à une belle erreur si ce n'est un BSOD sous windaube. Afin d'éviter cela, je me serais bien vue tester la présence mais dans un try/catch.
    Je vous remercie des infos que vous m'apporterais sur le sujet.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Points : 909
    Points
    909

  3. #3
    Membre régulier Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Points : 123
    Points
    123
    Par défaut
    En fait je voulais plus partir d'un cas concret et ensuite approfondir. Mais si c'est mieux de bûcher des milliers de pages pour comprendre, alors je ferais !

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Je pense que les quelques centaines de milliers de tutoriels sur le sujet se sont déjà posé la question de savoir par où commencer.

    Maintenant, si par hasard il y a une question plus ciblée...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre régulier Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Points : 123
    Points
    123
    Par défaut
    Et bien pas particulièrement, hormis, peut-être, le fait de vouloir gérer des cas concrets.

    Pour moi une classe toute bête contient des méthodes et des champs. Si par exemple on appelle un setter sans lui transmettre de valeurs alors qu'on en attends une, il se trouve que le try/catch permettrait de renvoyer une erreur.

    C'est ce que j'ai compris.
    Maintenant j'aimerais affiner cela afin de comprendre puis d'utiliser ce principe de codage pour que ma classe ne devienne pas instable inutilement.

    Jusque la, je me contentais juste de codé en prenant en compte les erreurs si j'en voyais. Mais maintenant je travail plus en amont à faire de l' UML. On se rends compte de bien des choses !

    Alors j'ai décidé d'afficher en clair dans mes programmes un retour d'informations en clair via un catch (si c'est la bonne démarche) afin que le programme se protège des erreurs humaines due au codage et due à l'utilisation. Dire que j'ai une question précise serais, à mon sens pas évident pour le moment. Il faut bien débuté par un bout et finir par un fonctionnement concret.

    Maintenant c'est sur, que vue le nombre de réponses sur le sujet ( j'entends en cherchant sur le forum... ) fait mal, car pas ou peu adapté à l'apprentissage en amont. Je comptais alors plus m'orienter sur le cotés théorique de la démarche afin de savoir ce qui la déclenche, pourquoi, dans quels cas peut-on éviter que l'exception se déclenche, comment s'y prendre pour que le try/catch soit utile et non surcharger (au cas ou on code pour le fun plus compliqué que ce que ça ne doit) et enfin si on crée un bloc try/catch après tout c'est aussi pour faire un code propre et utilisable.

    C'est donc pour ça qu'au début j'étais parti sur un exemple compréhensible par tous, afin d'en comprendre tout les différents mécanismes.

    Mais c'est si compliqué; pas le code, de se comprendre par écrits.

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    ta quesiton est vague. Le principe du try catch finally ca reste


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    try{
     // code qui pourrait déclencher une exception
     } catch (....){
     // traitement de certaines exceptions
    } finally {
     // code toujours exécuté
    }
    Ce que tu met dans ton traitement dépendra de tes cas concret d'erreur. Si c'est une fichier inexistant tu peux retourner false dans ta méthode, tenter l'accès à un autre fichier, log l'erreur et interrompre le process, lancer un autre exception, ....

  7. #7
    Membre régulier Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Points : 123
    Points
    123
    Par défaut
    Maintenant la question est : Les exceptions sont à écrire soi-même ou elles sont écrite par défaut quand on code auquel cas il faut avoir l'erreur à la compilation puis la gérer par un try/catch ?

  8. #8
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    si tu veux lancer toi même des exceptions dans des cas d'erreur, il faut utiliserla commande throw. Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public void setX(int x){
        if(x<0)
            throw new IllegalArgumentException("x doit être supérieur à 0");
     ....
    }

  9. #9
    Membre régulier Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Points : 123
    Points
    123
    Par défaut
    Ok !
    Mais alors ou se placerais le tray/catch ? Au moment d'nitialiser vers setX ou alors au retour ?

  10. #10
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    en supposant que l'exception est lancée par setX, le try / catch se met soit dans l'appelant, soit dans n'importe quelle méthode appelant l'appelant, etc. Bref, à chaque niveau, tu as plusieurs possibilité:

    1) gérer et rattraper le cas d'erreur
    2) ne pas le gérer et remonter plus haut
    3) attrapper l'exception et en faire remonter une autre (particulièrement courant lorsque l'on passe d'un niveau à l'autre de l'application, exemple lors de la liaison entre le GUI et le buisness logic)
    Tout dépend de l'exception et d'à quel niveau tu veux la gérer. C'est donc du cas par cas.

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

Discussions similaires

  1. Comment placer un try catch ?
    Par armoirapizza dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 07/06/2011, 20h02
  2. Réponses: 6
    Dernier message: 07/05/2010, 10h48
  3. comment fonctionne les "try-catch" en pgsql
    Par charlie_p07 dans le forum PostgreSQL
    Réponses: 0
    Dernier message: 13/03/2008, 17h57
  4. [FAQ Algo] Comment fonctionne le tri à bulle
    Par PRomu@ld dans le forum Contribuez
    Réponses: 0
    Dernier message: 07/08/2006, 12h45

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