Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2986 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2  3
Auteur Sujet :

Gestion des exceptions

n°933699
sircam
I Like Trains
Posté le 29-12-2004 à 17:37:12  profilanswer
 

Reprise du message précédent :

the real moins moins a écrit :

où il serait d'ailleurs de fort bon aloy d'utiliser une enum :)


Merci, je bosse en 1.3, alors  :pfff:  


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
mood
Publicité
Posté le 29-12-2004 à 17:37:12  profilanswer
 

n°933720
the real m​oins moins
Posté le 29-12-2004 à 17:59:03  profilanswer
 

sircam a écrit :

Merci, je bosse en 1.3, alors  :pfff:


[:forummp3]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°933722
the real m​oins moins
Posté le 29-12-2004 à 18:00:57  profilanswer
 

lorill a écrit :

bof, perso je préfere ne pas avoir d'exception applicatives, et hériter de celles qui sont correctes si possibles.
 
par exemple, si j'ai une erreur de connexion, ca me semble logique de surclasser IOException


ben dans certains cas tu as pas de quoi hériter /ou/ tu dois cacher le systeme sous-jacent.
(exemple, tu construis un bidule qui peut aller se connecter de maniere transparente sur du ldap, une db ou un file system pour par exemple logger un user dans ton appli.. tu peux pas te permettre d'avoir une interface qui expose les exceptions de tous les systemes sous-jacents possibles)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°933729
sircam
I Like Trains
Posté le 29-12-2004 à 18:10:23  profilanswer
 

+1
 
Préfère une exception custom type business (... waow... le charabia) qui permet de stocker l'exception à l'origine, IOException, si tu ne veux pas perdre l'info tout en masquant ces détails dont les couches supérieures n'ont rien à foutre.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°933731
the real m​oins moins
Posté le 29-12-2004 à 18:12:25  profilanswer
 

bon allez, j'ai hésité un peu, mais jla fait:

Citation :

file.exists()


ou

Citation :

} catch (FileNotFoundException e) {


[:autobot]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°933743
benou
Posté le 29-12-2004 à 18:22:23  profilanswer
 

http://forum.hardware.fr/themes_static/images/defaut/moderation.gif


---------------
ma vie, mon oeuvre - HomePlayer
n°933771
nraynaud
lol
Posté le 29-12-2004 à 18:58:57  profilanswer
 

the real moins moins a écrit :

bon allez, j'ai hésité un peu, mais jla fait:

Citation :

file.exists()


ou

Citation :

} catch (FileNotFoundException e) {


[:autobot]


[:kiki]


---------------
trainoo.com, c'est fini
n°933781
sircam
I Like Trains
Posté le 29-12-2004 à 19:15:00  profilanswer
 

the real moins moins a écrit :

bon allez, j'ai hésité un peu, mais jla fait


[:djswad]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°933787
lorill
Posté le 29-12-2004 à 19:24:33  profilanswer
 

ben oui evidemment, ca depends des cas

n°933789
sircam
I Like Trains
Posté le 29-12-2004 à 19:25:22  profilanswer
 

lorill a écrit :

ben oui evidemment, ca depends des cas


Explique ?! [:chupachupz]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
mood
Publicité
Posté le 29-12-2004 à 19:25:22  profilanswer
 

n°933792
nraynaud
lol
Posté le 29-12-2004 à 19:30:49  profilanswer
 

lorill a écrit :

ben oui evidemment, ca depends des cas


dans cette classe de pb, ça dépend pas, c'est catch pour tout le monde.
 
 
sircam > y'a un race condition entre le file.exist() et l'utilisation suivante du file. Et comme java ça rame, y'a un risque majeur /o\ En plus l'autre est plus rapide. et puis en fait y'a pas de race, parce que dans tous les cas, si y'a un pb, l'exception sera levée, donc pas la peine de vérifier avant.


---------------
trainoo.com, c'est fini
n°933794
the real m​oins moins
Posté le 29-12-2004 à 19:33:47  profilanswer
 

putain si :o
je vérifie avant, et apres je ne catche ou remonte que les IOException.
 
bordel [:djswad]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°933797
sircam
I Like Trains
Posté le 29-12-2004 à 19:34:48  profilanswer
 

Beh, surtout d'un point de vue design, je préfère séparer le traitement normal de la condition d'exception...


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°933805
nraynaud
lol
Posté le 29-12-2004 à 19:44:26  profilanswer
 

mais là c'est pas de ta faute c'est pas toi qu l'a faite l'interface !
 
En plus en séparant, tu introduits un point de fragilité artificiel : dans "mon" truc, si tu as un pb, l'erreur est claire, tu la remontes à l'utilisateur. Dans le tiens, si tu as un race, tu as une erreur innatendue avec un statut douteux (puisque la "vraie" est sur le exist()) à remonter à l'utilisateur.


---------------
trainoo.com, c'est fini
n°933826
lorill
Posté le 29-12-2004 à 20:12:22  profilanswer
 

sircam a écrit :

Explique ?! [:chupachupz]


je répondais à ca :
 

the real moins moins a écrit :

ben dans certains cas tu as pas de quoi hériter /ou/ tu dois cacher le systeme sous-jacent.
(exemple, tu construis un bidule qui peut aller se connecter de maniere transparente sur du ldap, une db ou un file system pour par exemple logger un user dans ton appli.. tu peux pas te permettre d'avoir une interface qui expose les exceptions de tous les systemes sous-jacents possibles)


 

n°933844
sircam
I Like Trains
Posté le 29-12-2004 à 20:40:46  profilanswer
 

Nicolas, tu répondais à qui ?
 

Citation :

En plus en séparant, tu introduits un point de fragilité artificiel


Par "séparer le traitement normal de la condition d'exception", je parle bien d'un bloc try/catch (formulation gratuitement pompeuse).


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°933978
nraynaud
lol
Posté le 30-12-2004 à 09:49:07  profilanswer
 

sircam > à toi, mais j'avais mal compris ce que tu disais

n°933980
Jubijub
Parce que je le VD bien
Posté le 30-12-2004 à 10:03:58  profilanswer
 

j'ai pas encore bien le réflexe de généraliser l'utilisation d'exceptions...pour le moment, je m'en sers surtout pour l'effet propagateur que ca a, en particulier pour faire remonter les exceptions vers la GUI...
 
j'avoue que pour le file.exists(), j'aurais choisi ca au lieu de l'exception, et du coup, je me serais pris le pb expliqué par nraynaud ;)

n°935917
joquetino
Posté le 03-01-2005 à 17:26:47  profilanswer
 

Bonjour à tous,  
 
J'ai un ch'tit souci toujours avec les exceptions.
J'ai tjrs un formulaire où je chope des valeurs.
Voici ce que je fais avec ce formulaire :  

Code :
  1. public void  actionPerformed (ActionEvent evt) {
  2.    if ( (JButton) evt.getSource() == bouttonValider )
  3.    {
  4.     try{
  5.     //on récupère les champs du formulaire
  6.     String libelle=champNomProjet.getText();
  7.     String desc=champDescProjet.getText();
  8.     String nom=champNomChefProjet.getText();
  9.     String prenom=champPrenomChefProjet.getText();
  10.     String dateDebut=champDateDebutProjet.getText();
  11.     String dateFin=champDateFinProjet.getText();
  12.     String choixGranularite=granularites[listeGranularite.getSelectedIndex()];
  13.    SimpleDateFormat dateStandard = new SimpleDateFormat("dd/MM/yyyy" );
  14.     if (dateDebut.equals("" )){
  15.      dateDebutProjet=null;
  16.    //on l'initialise à une date vide
  17.     }
  18.     else{
  19.      dateDebutProjet=dateStandard.parse(dateDebut);
  20.     }
  21.     if (dateFin.equals("" )){
  22.      dateFinProjet=null;
  23.    //on l'initialise à une date vide
  24.     }
  25.     else{
  26.      dateFinProjet=dateStandard.parse(dateFin);
  27.     }
  28.     //on creer un nouveau projet
  29.     projet=new Projet(libelle,desc,prenom,nom,choixGranularite,dateDebutProjet,dateFinProjet);
  30.     dispose () ;
  31.     new MenuPrincipalProjet(projet);
  32.     }catch(ChampManquantException c){
  33.      JOptionPane.showMessageDialog(this,c.toString(),"erreur champ manquant",
  34.        JOptionPane.ERROR_MESSAGE);}
  35.     catch(LibelleProjetDejaExistantException c ){
  36.      JOptionPane.showMessageDialog(this,c.toString(),"erreur libellé",
  37.        JOptionPane.ERROR_MESSAGE);
  38.     }
  39.     catch(Exception e){
  40.      JOptionPane.showMessageDialog(this,e.toString(),"erreur format date",
  41.        JOptionPane.ERROR_MESSAGE);
  42.     }
  43.    }
  44.    else if( (JButton) evt.getSource() == bouttonAnnuler )
  45.    {
  46.     this.dispose();
  47.     }
  48.    }


J'ai éxécuté ce bout de code chez moi. Pas de souci, il s'éxécute bien. Par contre,  
chez un copain, j'ai le droit au message :  
Java.lang.NullPointerException
 
Auriez-vous une idée du problème dans le code ci dessus?
Quel procédure appelée pourrait déclencher cette exception?

n°935918
the real m​oins moins
Posté le 03-01-2005 à 17:27:36  profilanswer
 

apprend à lire les stacktraces, tu verras ça aide.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°935923
benou
Posté le 03-01-2005 à 17:32:49  profilanswer
 

--, calme toi :o
 
regarde la ligne indiquée dans la stacktrace. regarde ton code à cette ligne, tu peux parier que l'objet que tu y utilises n'a pas été instancié (y pas eu de new, quoi)


---------------
ma vie, mon oeuvre - HomePlayer
n°935924
the real m​oins moins
Posté le 03-01-2005 à 17:33:49  profilanswer
 

:whistle:


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°935929
joquetino
Posté le 03-01-2005 à 17:38:15  profilanswer
 

Pourtant si un objet n'a pas été instancié ce code ne marcherait pas chez moi.....
Or celui ci fonctionne chez moi et pas sur la machine d'un copain...


Message édité par joquetino le 03-01-2005 à 17:38:47
n°935931
sircam
I Like Trains
Posté le 03-01-2005 à 17:39:19  profilanswer
 

Le stack trace (la partie utile en tout cas) serait peut-être le bienvenu ?


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°935934
benou
Posté le 03-01-2005 à 17:41:29  profilanswer
 

joquetino a écrit :

Pourtant si un objet n'a pas été instancié ce code ne marcherait pas chez moi.....
Or celui ci fonctionne chez moi et pas sur la machine d'un copain...


ca peut venir de tout un tas de raison : fichier manquant => getRessourceAsStream qui retourne null, ou autre [:spamafote]


---------------
ma vie, mon oeuvre - HomePlayer
n°935936
joquetino
Posté le 03-01-2005 à 17:46:18  profilanswer
 

Qu'appelez vous la stack trace?  

n°935938
the real m​oins moins
Posté le 03-01-2005 à 17:46:35  profilanswer
 

ha, d'accord.
je laisse la main.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°935941
sircam
I Like Trains
Posté le 03-01-2005 à 17:47:20  profilanswer
 

joquetino a écrit :

Qu'appelez vous la stack trace?


[:kiki]
Le message d'erreur que la machine virtuelle met gratuitement à ta disposition, et dans lequel tu as lu NullPointerException.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°935942
benou
Posté le 03-01-2005 à 17:48:08  profilanswer
 

joquetino a écrit :

Qu'appelez vous la stack trace?


le truc plein de lignes que t'as du vori affiché dans la console quand le programme a planté.
stack = pile d'appel
trace = affichage (en gros)
 
ca t'affiche la pile d'appel au moment de la génération de l'exception => tu peux retrouver où le prog a planté.
 
t'es sur que tu connais java ?


---------------
ma vie, mon oeuvre - HomePlayer
n°935945
the real m​oins moins
Posté le 03-01-2005 à 17:51:51  profilanswer
 

dis benou, calme-toi :o
 
 
 
 
[:cupra]
 
 
(et sinon, je pense pas qu'il ait vu la stacktrace vu qu'il catch les exceptions et les avale gentiment en balançait un MessageDialog qui ne montre que le getMessage [:itm])


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°935950
joquetino
Posté le 03-01-2005 à 17:55:05  profilanswer
 

biensûr que je connais java, seulement je n'ai jamais entendu parler de stack trace.... Passons.
Pour revenir au problème, ayant un bloc try/catch, le programme ne plante pas mais m'affiche le message queje lui ai demandé d'afficher en cas d'erreur.
Je l'ai enlevé pour voir où ça plantait, et là j'ai l'erreur suivante :
java.lang.Error: Unresolved compilation problems:  
 Unhandled exception type ParseException
 Unhandled exception type ParseException
 
Normal je ne capte pas les erreurs liées à l'appel de la procédure dateStandard.parse(dateFin);
 
Donc quel exception, moins générale que Exception dois déclencher ici?
 

n°935951
sircam
I Like Trains
Posté le 03-01-2005 à 17:58:00  profilanswer
 

the real moins moins a écrit :


(et sinon, je pense pas qu'il ait vu la stacktrace vu qu'il catch les exceptions et les avale gentiment en balançait un MessageDialog qui ne montre que le getMessage [:itm])


Y'a p'tete une chtite console qui vomit gentiment les erreurs en cachette, à l'abi du GUI tout propre. Ou même un log.
 
Sinon, joquetino, il est évident que tu programmes de manière profane sans comprendre ce que tu fais. Et ça, c'est jamais bon signe.  [:airforceone]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°935954
joquetino
Posté le 03-01-2005 à 18:03:19  profilanswer
 

sircam a écrit :

Y'a p'tete une chtite console qui vomit gentiment les erreurs en cachette, à l'abi du GUI tout propre. Ou même un log.
 
Sinon, joquetino, il est évident que tu programmes de manière profane sans comprendre ce que tu fais. Et ça, c'est jamais bon signe.  [:airforceone]


Sircam, certes je débute en java (j'y suis seulement depuis moins d'un mois), maintenant supposer que je programme sans comprendre, ça n'engage que toi. :fou:  :o  

n°935963
benou
Posté le 03-01-2005 à 18:14:19  profilanswer
 

plutot que de virer le try/catch (ce qui rend ton code non compilable), affiche la stacktrace en faisant e.printStackTrace(); dans le catch
 
remarque : c'est très rarement une bonne idée de cacther Exception, et ca l'est encore moins de ne pas afficher la trace de cette exception dont tu ne sais rien.
 
 
et désolé si tu as mal pris ma remarque ... c'est juste que c'est quand même très très couramment utilisé le terme stacktrace en java ...


---------------
ma vie, mon oeuvre - HomePlayer
n°935976
joquetino
Posté le 03-01-2005 à 18:28:22  profilanswer
 

J'ai fais ce que tu m'as conseillé et j'ai réussi à trouver la procédure qui plantait. Merci.  
Par contre, pourquoi dis-tu que c'est rarement une bonne idée de catcher Exception?

n°935988
benou
Posté le 03-01-2005 à 18:42:21  profilanswer
 

parce que tu ne sais pas ce que tu catches et que donc, tu ne sais pas quoi en faire.
 
à quoi ca sert de catcher une exception si tu ne sais pas quoi faire pour résoudre le problême qui en est la cause ?


---------------
ma vie, mon oeuvre - HomePlayer
n°935994
joquetino
Posté le 03-01-2005 à 18:51:39  profilanswer
 

Oui en effet. Mais dans mon cas, je sais l'erreur que je catches.
 
Merci encore de votre aide. @ la prochaine.

n°935996
Jubijub
Parce que je le VD bien
Posté le 03-01-2005 à 18:53:08  profilanswer
 

parce que toute exception hérite d'exception
 
c le catch le moins précis que tu peux faire, et par conséquent ca t'aide pas à trouver la source du pb...
 
sinon pas catcher une parseError sur un formulaire, t joueur...y'a une chance sur une que le user fasse une faute la première fois...pis si t dans le cadre d'une GUI, tu fais un joli popup qui prévient que ct pas le bon format...


---------------
Jubi Photos : Flickr - 500px
n°936007
benou
Posté le 03-01-2005 à 19:02:19  profilanswer
 

joquetino a écrit :

Oui en effet. Mais dans mon cas, je sais l'erreur que je catches.


si tu sais l'erreur que tu catches, catche cette exception là alors, pas Exception [:spamafote]


---------------
ma vie, mon oeuvre - HomePlayer
n°936009
benou
Posté le 03-01-2005 à 19:03:14  profilanswer
 

là dans ton cas ca ressemble plus à un "je cacth Exception pour que le compilo arrête de gueuler" :/


---------------
ma vie, mon oeuvre - HomePlayer
n°936029
sircam
I Like Trains
Posté le 03-01-2005 à 19:22:06  profilanswer
 

Citation :

Sircam, certes je débute en java (j'y suis seulement depuis moins d'un mois), maintenant supposer que je programme sans comprendre, ça n'engage que toi.


 
Ne le prends pas mal, joquetino.
 
Comme le dit benou, le terme stack trace fait partie des bases en java, et tes questions montrent clairement que tu ne comprends pas ce que tu es en train de faire.
 

Citation :

pourquoi dis-tu que c'est rarement une bonne idée de catcher Exception?


suivi de

Citation :

Mais dans mon cas, je sais l'erreur que je catches.


Tes questions supra, la soupe procédure/fonctions/méthodes, ton premier post me permettent d'affirmer que tu ne comprends pas ce que tu fais.
 
Ce n'est ni gratuit, ni méchant.
 
Il n'y a pas de mal à ne pas savoir, mais manifestement, tu t'attaques à une matière trop épaisse par rapport à tes connaissances.
 
Il vaut mieux commencer par des choses plus simples, le temps de comprendre et de maitriser les concepts. :jap:


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3

Aller à :
Ajouter une réponse
 

Sujets relatifs
[ASPX][C#] Gérer des données sur une page, gestion des event[Java] Multithreading et gestion des exceptions
Gestion particulière d'exceptions à coup de finally...Gestion des Exceptions
Le mécanisme de gestion d'exceptions des JSP2 questions : gestion des exceptions et paramètres des fonctions
gestion des exceptions dans les classes en cppGestion des exceptions dans les Servlets
Gestion des exceptions dans des DLL[Delphi/COM+] Gestion des exceptions ...
Plus de sujets relatifs à : Gestion des exceptions


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)