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 :

Question à propos un programme d'exceptions


Sujet :

avec Java

  1. #1
    Débutant  
    Inscrit en
    Mai 2006
    Messages
    705
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 705
    Points : 117
    Points
    117
    Par défaut Question à propos un programme d'exceptions
    Bonjour,

    J'ai cette méthode main:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public static void main(String[] args) {
     
            try {
                Ville v = new Ville("Ts", 1200, "France");
            } catch (NombreHabitantException ex) {
                ex.printStackTrace();
            } catch (NomVilleException ex) {
                System.out.println("Erreur de nom");
            }
            finally{
                System.out.println("Je suis dans le bloc finally");
            }
        }
    Le problème c'est que sous la ligne ex.printStackTrace(); l'IDE m'affiche un warning indiquant que Throwable.printStackTrace() should be removed, je me demande pourquoi?

    C'est quoi le problème, merci!

  2. #2
    Rédacteur/Modérateur

    Avatar de alain.bernard
    Homme Profil pro
    Ingénieur aéronautique
    Inscrit en
    Décembre 2011
    Messages
    749
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur aéronautique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 749
    Points : 5 219
    Points
    5 219
    Par défaut
    Salut,

    L'IDE que tu as affiches ce message car il te signale que lors du déploiement de ton application, lorsque tu n'auras plus de sortie console, l'utilisateur ne verra pas l'affichage de la stacktrace et donc a fortiori l'exception. Il vaut mieux mettre ça dans un log, ou afficher l'erreur dans une boîte de dialogue, etc.
    C'est purement une recommandation.

    Alain
    Pas de messages techniques par MP, les forums sont là pour ça.
    Rédacteur d'articles sur la plateforme Eclipse

    N'oubliez pas de consulter les FAQ Eclipse et les cours et tutoriels Eclipse

  3. #3
    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
    'Faut reconnaître que "should be removed" c'est pas terrible comme recommandation. "Should indicate where to print" me semblerait préférable.

    Moi on me dit "should be removed" je comprends "Il sert à rien ton catch/printStackTrace(), ici : tu es à la fin de la méthode main() et si une Exception en remonte, le wrapper de main() s'occupera d'écrire la stack trace."
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    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
    Citation Envoyé par alain.bernard Voir le message
    Salut,

    L'IDE que tu as affiches ce message car il te signale que lors du déploiement de ton application, lorsque tu n'auras plus de sortie console,
    Ha bon, d'où tu sort ça? Toutes mes applications java, jusqu'à présent, ont bien leur console C'est même la première fois que je vois un ide dire qu'on ne devrais pas utiliser printStackTrace()

    Tu n'aurais pas activer des règles optionnelles dans ton ide, ou des trucs comme checkstyle?

  5. #5
    Membre chevronné
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Points : 1 855
    Points
    1 855
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Toutes mes applications java, jusqu'à présent, ont bien leur console C'est même la première fois que je vois un ide dire qu'on ne devrais pas utiliser printStackTrace()
    Ce n'est pas le cas des miennes (applications réparties sur un ensemble de pc104 dispersés sur un gros gros matériel: un téléscope). Si j'avais ça sur les IDE utilisés par les programmeurs du projet ça serait bien pratique: le premier qui me fait un printStacktrace se fait taper sur les doigts
    J'ai des principes: je peux toujours trouver une bonne raison pour les contredire .... mais j'ai des principes!
    (mon excellent bouquin sur Java : https://eska-publishing.com/fr/livre...822407076.html)

  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
    Y a pas de stderr sur les PC104??

  7. #7
    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
    Enfin moi sur un desktop, j'ai certes une sortie console... Mais vu que je n'ouvre aucune vue de cette console, elle est tout simplement perdue.

    (Après il me semble que si je fais quand même printStackTrace() alors que j'ai fait ça, c'est encore mon problème.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  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
    en même temps, ça ne sert qu'en cas de problème, pour que les support sie "ouvrez le ficheir blabla, ou lancer le programme de cette manière et dites nous ce que ça affiche". Je connais quelques grosse applications qui mettent des stacktraces dans les logs visibles par l'utilisateur par défaut... Je t'assure que ça donne une sale réputation à java d'avoir des messages d'erreur illisibles

  9. #9
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    en même temps, ça ne sert qu'en cas de problème, pour que les support sie "ouvrez le ficheir blabla, ou lancer le programme de cette manière et dites nous ce que ça affiche". Je connais quelques grosse applications qui mettent des stacktraces dans les logs visibles par l'utilisateur par défaut... Je t'assure que ça donne une sale réputation à java d'avoir des messages d'erreur illisibles
    Salut,

    Les utilisateurs sont perturbés par tout :
    - les stacktraces évidemment qu'ils prennent pour des formules de magies noires ou un truc comme ça
    - mais souvent rien que par les messages en anglais (tous nos logs sont en anglais) (qui m'ont été déjà enoncée à haute voie sous la forme "il dit que la lala la la la machin en anglais" (véridique ! enfin j'ai traduit les bruits de bouche par la )
    - les questions délirantes qu'on peut poser nous les techniciens : comme quel OS ? Combien de ram ? Quelle version de java ? Quelle version de l'application ?

    pour ma part, j'ai ajouté un menu "Rapport d'incident" qui permet soit de créer un zip (donc l'extension n'est pas zip, histoire de faire croire que çà n'est pas un ) qui contient :
    - les logs (qui peuvent contenir des stackTraces)
    - mais aussi des dumps des variables d'environnement, d'informations sur mon produit (version, listes des plugins (c'est une application Eclipse RCP), etc...)
    - ses préférences,
    - des logs d'applications tierces
    - copie d'écrans éventuellement
    - etc...
    soit de mailer directement ce zip à une adresse de support.

    Du coup, en cas de problème, je réponds toujours "Envoyez moi le rapport d'incident" et comme ça pas de soucis : l'utilisateur (ou son technicien d'intervention) n'est pas perturbé et c'est un bonheur pour moi : je n'ai pas besoin de redemander 36 fois telle ou telle info.

    Seuls 2 problèmes ne sont pas pris en compte par cette procédure : les deadlocks dans l'UI, et si le workspace est réinitialisé avant l'envoi du rapport.
    Je réfléchis encore à des solutions.
    EDIT : j'oubliais : je ne collecte pas encore les crash hotspot également
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  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
    Pour info, c'est comme ça que procède atlassian avec ses produits.

    Il y a une interface de rapport d'incident qui collecte:
    L'environnement (OS, variable, etc)
    Les logs du produits
    Les logs du conteneur j2ee
    Quelques mesures sur les données
    Et qui uploade tout sur leur tracker.

    Petit bonbon, ils ont un système automatique chez eux qui analyse tout ça et te pointes des éléments de la docs qui pourraient t'aider!

    Ce qui est impressionnant, c'est que ça pointe souvent bien, même si ce n'est pas toujours en rapport avec ton problème. Des trucs du style

    "nous avons remarqué certains messages dans vos logs, les documents suivant pourraient vous être utile" et au passage tu résoud un autre problème que tu te trainait depuis 6 mois sans jamais avoir eu le temps de regarder en détail ^^


    Au passage, si tu rajoute l'environnement, systématiquement au démarrage de ton application dans le logs, tu pourra le récupérer au run suivant quand il fera un rapport.

  11. #11
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par tchize_ Voir le message

    Petit bonbon, ils ont un système automatique chez eux qui analyse tout ça et te pointes des éléments de la docs qui pourraient t'aider!
    Intéressant... à mettre dans ma todo list "à mes heures perdues", pour la période 2017-

    Pour l'instant je travaille, à mes heures perdues, sur un système similaire mais manuel/assisté (qui récupère automatiquement les alertes et les classent, tracke les lignes de logs concernant un objet ou une action donnée pour en faire un sous-log à part (cross logiciels), etc...)

    Citation Envoyé par tchize_ Voir le message
    Au passage, si tu rajoute l'environnement, systématiquement au démarrage de ton application dans le logs, tu pourra le récupérer au run suivant quand il fera un rapport.
    Ce que je fais, mais dans un log à part, pour éviter d'avoir à farfouiller dans 30 Mo de log pour le retrouver En attendant d'avoir terminer mon analyseur de log qui pourra retrouver ça tout seul au milieu de 30 Mo de logs...

    Citation Envoyé par tchize_ Voir le message
    au passage tu résoud un autre problème que tu te trainait depuis 6 mois sans jamais avoir eu le temps de regarder en détail
    Je peux voir également de cette manière des problèmes que personne ne me signale !!! C'est pourquoi quand je reçois des logs j'analyse toujours tout et qu'il me faut un outil d'assistance, voire automatisé ce serait le bonheur En plus de cette manière, je pourrais sous-traiter aux techniciens de support beaucoup plus de préqualification... et avoir plus de temps à mois pour le dev...
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. Question à propos les exceptions
    Par L'aigle de Carthage dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 21/07/2013, 22h19
  2. Question à propos des exceptions
    Par L'aigle de Carthage dans le forum Débuter avec Java
    Réponses: 9
    Dernier message: 05/01/2013, 23h25
  3. Questions à propos de la programmation
    Par SomePerson dans le forum Général Java
    Réponses: 2
    Dernier message: 19/01/2012, 16h42
  4. Question à propos de la STL et des exceptions
    Par teddyalbina dans le forum Langage
    Réponses: 4
    Dernier message: 11/06/2011, 00h24
  5. Une question à propos des thread
    Par tscoops dans le forum C++Builder
    Réponses: 4
    Dernier message: 07/11/2003, 14h03

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