De la bonne utilisation des exceptions (was: -- ou benou ?)

De la bonne utilisation des exceptions (was: -- ou benou ?) - Divers - Programmation

Marsh Posté le 04-02-2004 à 08:28:21    

Dans le traitement d'un fichier de configuration optionnel (si le fichier est la, on le traite, sinon on s'en fout mais c'est pas grave) :
 
-- :  

Code :
  1. if (file.exists()) {
  2.    try {
  3.       InputStream in = new File InputStream(file);
  4.       // lecture du flux ...
  5.    } catch (IOException e) {
  6.       // traitement d'une erreur innatendue
  7.    }
  8. } else {
  9.    // traitement du cas du fichier qui n'existe pas
  10. }


 
 
benou :  

Code :
  1. try {
  2.    InputStream in = new File InputStream(file);
  3.    // lecture du flux ...
  4. } catch (FileNotFoundException e) {
  5.    // traitement du cas du fichier qui n'existe pas
  6. } catch (IOException e) {
  7.    // traitement d'une erreur innatendue
  8. }


Message édité par lorill le 04-02-2004 à 12:47:13
Reply

Marsh Posté le 04-02-2004 à 08:28:21   

Reply

Marsh Posté le 04-02-2004 à 08:29:48    

ouverture du ficher pour vérifier son existence :o


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 04-02-2004 à 08:32:11    

sujet pas clair
ban :o

Reply

Marsh Posté le 04-02-2004 à 08:34:50    

[:rofl]
 
 
petite précision : c'est pour être averti de la nom existence d'un fichier dans le cas où on veut le lire.


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 04-02-2004 à 08:34:59    

Les exceptions, comme leur nom l'indique sont pour les cas exceptionnels. Une fonction ne doit pas sortir en exception si elle rend le service attendu.


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 04-02-2004 à 08:42:51    

kadreg a écrit :

Les exceptions, comme leur nom l'indique sont pour les cas exceptionnels. Une fonction ne doit pas sortir en exception si elle rend le service attendu.


Tout le monde est d'accord la dessus ....
 
on parle pas d'un throw on parle d'un catch :o
Du coup tu t'es trompé dans ton vote [:kiki]


Message édité par benou le 04-02-2004 à 08:44:08

---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 04-02-2004 à 08:51:43    

lorill : pour alimenter le débat correctement, t'as cas ajouter ca dans ton 1er post :
 
-- :  

Code :
  1. if (file.exists()) {
  2.    try {
  3.       InputStream in = new File InputStream(file);
  4.       // lecture du flux ...
  5.    } catch (IOException e) {
  6.       // traitement d'une erreur innatendue
  7.    }
  8. } else {
  9.    // traitement du cas du fichier qui n'existe pas
  10. }


 
 
benou :  

Code :
  1. try {
  2.    InputStream in = new File InputStream(file);
  3.    // lecture du flux ...
  4. } catch (FileNotFoundException e) {
  5.    // traitement du cas du fichier qui n'existe pas
  6. } catch (IOException e) {
  7.    // traitement d'une erreur innatendue
  8. }


Message édité par benou le 04-02-2004 à 08:52:44

---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 04-02-2004 à 08:52:40    

Ca dépend ce qu'est le file :o


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 04-02-2004 à 08:52:58    

kadreg a écrit :

Ca dépend ce qu'est le file :o  


un fichier :o


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 04-02-2004 à 08:53:38    

benou a écrit :


un fichier :o


 
[:the real moins moins]


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 04-02-2004 à 08:53:38   

Reply

Marsh Posté le 04-02-2004 à 08:54:55    

[:mlc2]


---------------
IVG en france
Reply

Marsh Posté le 04-02-2004 à 08:55:01    

En quoi la nature du file change quelque chose  :heink:  
 
Puour reprendre l'exemple de taiche, imagine que c'est un fichier d'initialisation optionnel


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 04-02-2004 à 08:57:10    

moktar1er a écrit :

sujet pas clair


vivement le vote des nanas  [:kurrupt]


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 04-02-2004 à 09:00:45    

J'ai voté blanc passke j'm'en branle :o


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 04-02-2004 à 09:03:47    

Taiche a écrit :

J'ai voté blanc passke j'm'en branle :o


C'est  à cause de toi que les 2 zouaves ont pourri blabla@prog sur 35 pages et tu votes blanc. bravo [:kiki]
 
 
 
P.S. -- rulez sur ce coup (plus de précisions dans le mareekotes d'hier :o)


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Marsh Posté le 04-02-2004 à 09:05:09    

mareek a écrit :


C'est  à cause de toi que les 2 zouaves ont pourri blabla@prog sur 35 pages et tu votes blanc. bravo [:kiki]


[:--greg--]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 04-02-2004 à 09:08:28    

mareek a écrit :


C'est  à cause de toi que les 2 zouaves ont P.S. -- rulez sur ce coup (plus de précisions dans le mareekotes d'hier :o)


nan mais vraiment, quand tu regardes les 2 codes un peu au dessus, tu trouves que le 1er est bcp plus lisible que le 2e  :??:


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 04-02-2004 à 09:10:33    

benou a écrit :


nan mais vraiment, quand tu regardes les 2 codes un peu au dessus, tu trouves que le 1er est bcp plus lisible que le 2e  :??:  

Y'en a qui ont de la merde dans les yeux, faut les laisser s'ils veulent pas comprendre [:spamafote]

Reply

Marsh Posté le 04-02-2004 à 09:12:37    

benou a écrit :


nan mais vraiment, quand tu regardes les 2 codes un peu au dessus, tu trouves que le 1er est bcp plus lisible que le 2e  :??:  


Quand j'vois l'indentation dégueulasse, j'me dis qu'y en a pas un pour rattraper l'autre :o


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 04-02-2004 à 09:14:27    

Taiche a écrit :


Quand j'vois l'indentation dégueulasse, j'me dis qu'y en a pas un pour rattraper l'autre :o


c'est pas moi c'est joce :o


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 04-02-2004 à 09:17:28    

J'parle surtout des blocs :o L'indentation Sun-style me fait gerber :o


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 04-02-2004 à 09:19:36    

benou a écrit :


nan mais vraiment, quand tu regardes les 2 codes un peu au dessus, tu trouves que le 1er est bcp plus lisible que le 2e  :??:  


Oui.
De plus, je trouve que catcher une exception pour qqch d'aussi trivial n'a aucun sens, une exception est qqch d'exceptionnel. Si on part comme ça, on peut jeter les ifs à la poubelle et tout faire à coup d'exception tant qu'on y est :o


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Marsh Posté le 04-02-2004 à 09:29:38    


bon, c'est to choix, comme dirait l'autre ...
 

mareek a écrit :


De plus, je trouve que catcher une exception pour qqch d'aussi trivial n'a aucun sens, une exception est qqch d'exceptionnel. Si on part comme ça, on peut jeter les ifs à la poubelle et tout faire à coup d'exception tant qu'on y est :o  


comme je l'ai déjà dit, ca dépend du context.
Ce qui est exceptionnel pour l'appelé ne l'est pas forcément pour l'appelant.
 
Exemple : tu récupères une chaine saise par l'utilisateur. Elle est sensée contenir un nombre.
 
Pour récupérer la valeur du nombre, tu fais un parseInt(). Cette méthode peut générer un NumberFormatException (ce qui est logique dans son contexte).  Toi tu dois catcher l'exception parce que le fait que l'utilisateur ait pu faire une bourde de saisie est logique dans ton contexte.  
 
Donc catcher une exception n'a rien de rare ou de bizarre, même dans un cas d'execution normal.  
 
Catcher une exception c'est fréquent. C'est la génération d'erreur qui doit rester exceptionnelle ...


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 04-02-2004 à 09:33:51    

V-O-S    G-U-E-U-L-E-S :-o


Message édité par darklord le 04-02-2004 à 09:34:03
Reply

Marsh Posté le 04-02-2004 à 09:39:17    

DarkLord a écrit :

V-O-S    G-U-E-U-L-E-S :-o


au contraire, c'est le bon topic pour en parler :o

Reply

Marsh Posté le 04-02-2004 à 10:21:57    

kadreg a écrit :

Les exceptions, comme leur nom l'indique sont pour les cas exceptionnels. Une fonction ne doit pas sortir en exception si elle rend le service attendu.


chuis pas d'accord :o  'fin en VB on n'a que des errors et pas d'exception [:kiki]
 

benou a écrit :

nan mais vraiment, quand tu regardes les 2 codes un peu au dessus, tu trouves que le 1er est bcp plus lisible que le 2e  :??:  


j'ai voté trop tôt: blanc. Et après coup j'aurais voté pour ton code.
 

Taiche a écrit :

J'parle surtout des blocs :o L'indentation Sun-style me fait gerber :o


défendable, on parle d'un bloc try. C'est un peu une exception dans la manière de gérer les blocs (non le jeu de mots n'était pas voulu :o)


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 04-02-2004 à 10:23:01    

ben je fais comme benou sur ce coup là... maintenant dire que c'est la meilleur chose à faire, je sais pas mais je trouve ca beaucoup plus simple et plus facile à lire :D


---------------
IVG en france
Reply

Marsh Posté le 04-02-2004 à 10:24:36    

DarkLord a écrit :

V-O-S    G-U-E-U-L-E-S :-o


 
Consonne
 
 
[:itm]

Reply

Marsh Posté le 04-02-2004 à 10:35:48    

Le lancement d'une exception me parait plus lourd (création de l'objet, puis ensuite récupération par le GC), avec en plus la création de l'InputStream peut-être pour rien, pour attraper une exception qui n'est pas exceptionnelle... Je préfère le cas 1


---------------
-( BlackGoddess )-
Reply

Marsh Posté le 04-02-2004 à 10:38:35    

DarkLord a écrit :

V-O-S    G-U-E-U-L-E-S :-o


c'est tout? j'aurais espéré un avis de ta part sur la question :/


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 04-02-2004 à 10:41:18    

au moins en C on se poserait pas ce genre de question debile [:kiki]

Reply

Marsh Posté le 04-02-2004 à 10:43:17    

chrisbk a écrit :

au moins en C on se poserait pas ce genre de question debile [:kiki]


 
On aurait coré [:dawa]


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 04-02-2004 à 10:45:56    

mais nan, c'est hyper safe le C, tant que tu n'utilises pas de pointeur [:itm]

Reply

Marsh Posté le 04-02-2004 à 10:56:17    

chrisbk a écrit :

mais nan, c'est hyper safe le C, tant que tu n'utilises pas de pointeur [:itm]


Du coup ça enlève l'utilisation de chaînes de caractères, c'est un peu restrictif :/


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 04-02-2004 à 10:58:15    

Taiche a écrit :


Du coup ça enlève l'utilisation de chaînes de caractères, c'est un peu restrictif :/


 
mais nan
 

Code :
  1. typedef struct maChaine
  2. {
  3. char prout[2048];
  4. }maChaine;


 
[:itm]


Message édité par chrisbk le 04-02-2004 à 10:58:30
Reply

Marsh Posté le 04-02-2004 à 10:59:01    

drasche a écrit :


c'est tout? j'aurais espéré un avis de ta part sur la question :/


 
 
bin mon avis c'est que si on s'attend à ce que le fichier ne puisse pas exister, je préfère tester sa présence que d'essayer de le loader et de me manger une exception, qd bien meme je la catcherai. Le fait que le fichier pourrait etre là juste après le test de présence [:ula]. Pas du tout applicable dans ce cas.
 
Ce qui me dérange par contre c'est les cas du genre, je teste que le fichier existe, il existe, je le loade et je me mange une filenotfoundexception :/
 
ca c'est plus chiant à gérer.

Reply

Marsh Posté le 04-02-2004 à 11:05:17    

j'ai voté -- !
je trouve ca plus clair de faire comme il le fait !!
parce que les catch multiples, a la fin, on s'y retrouve plus [:mmmfff]

Reply

Marsh Posté le 04-02-2004 à 11:06:33    

walli a écrit :

j'ai voté -- !
je trouve ca plus clair de faire comme il le fait !!
parce que les catch multiples, a la fin, on s'y retrouve plus [:mmmfff]


L'avis d'une programmeuse JS/VB ne nous interesse pas :O [:itm]

Reply

Marsh Posté le 04-02-2004 à 11:08:22    

chrisbk a écrit :


L'avis d'une programmeuse JS/VB ne nous interesse pas :O [:itm]
 


 
je fais aussi du J++  :kaola:

Reply

Marsh Posté le 04-02-2004 à 11:09:00    

walli a écrit :


 
je fais aussi du J++  :kaola:  


 
[:rofl]
 
Aux abris, ca va peter [:totoz]

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed