Les exceptions, y a une truc que j'comprend pas.

Les exceptions, y a une truc que j'comprend pas. - Java - Programmation

Marsh Posté le 11-07-2002 à 15:21:43    

Pourquoi dans certain cas, on est pas obligé par le compilateur de catcher certaines exceptions !?
genre, ça :

Code :
  1. public String getLabel (String id) throws MissingResourceException {
  2.         if (rb != null) {
  3.             String label;
  4.             try {
  5.                 label = rb.getString (id);
  6.                 return label;
  7.             } catch (NullPointerException npe) {
  8.                 return new String ();
  9.             }
  10.         }
  11.         return new String ();
  12.     }


ça passe à la compile, alors que getString peut lancer aussi des ClassCastException.
Comment ça se fait que dans certain cas, le compilateur obligé à catcher ou transmettre une exception, et dans d'autres non.
Dans l'exemple que g donné, je ne catch, ni ne transmet la ClassCastException. Que deviendrait cette exception si elle se produisait ?


Message édité par El_gringo le 11-07-2002 à 15:22:40
Reply

Marsh Posté le 11-07-2002 à 15:21:43   

Reply

Marsh Posté le 11-07-2002 à 15:57:58    

Daaaaaark, tu me manque déja, t'en vas pas ! :sweat:

Reply

Marsh Posté le 11-07-2002 à 16:06:57    

el_gringo a écrit a écrit :

Pourquoi dans certain cas, on est pas obligé par le compilateur de catcher certaines exceptions !?
genre, ça :

Code :
  1. public String getLabel (String id) throws MissingResourceException {
  2.         if (rb != null) {
  3.             String label;
  4.             try {
  5.                 label = rb.getString (id);
  6.                 return label;
  7.             } catch (NullPointerException npe) {
  8.                 return new String ();
  9.             }
  10.         }
  11.         return new String ();
  12.     }


ça passe à la compile, alors que getString peut lancer aussi des ClassCastException.
Comment ça se fait que dans certain cas, le compilateur obligé à catcher ou transmettre une exception, et dans d'autres non.
Dans l'exemple que g donné, je ne catch, ni ne transmet la ClassCastException. Que deviendrait cette exception si elle se produisait ?




 
le throws MissingResourceException { signifie que lorsque tu fera apel a la fonction "getLabel(String id)" ben tu devras l entourer d un block try catch car elle pe soulever une exception
 
avec l experience tu comprendra l interet de declaré une methode throws qqChose


Message édité par veryfree le 11-07-2002 à 16:09:17
Reply

Marsh Posté le 11-07-2002 à 16:09:50    

el_gringo a écrit a écrit :

Daaaaaark, tu me manque déja, t'en vas pas ! :sweat:  



fous lui la paix bon sang

Reply

Marsh Posté le 11-07-2002 à 16:17:36    

Le compilateur ne cherche pas focrément à catcher tout ce qui est runtime exception.
 
Donc, les ClassCastException, NullPointerException, etc, ne sont pas catchées (sinon, dès que tu fais objet.toto(), ça pourrait lancer une NullPointerException...
 
C'estla JVM qui s'en occupe.

Reply

Marsh Posté le 11-07-2002 à 16:22:33    

veryfree a écrit a écrit :

 
 
le throws MissingResourceException { signifie que lorsque tu fera apel a la fonction "getLabel(String id)" ben tu devras l entourer d un block try catch car elle pe soulever une exception
 
avec l experience tu comprendra l interet de declaré une methode throws qqChose




 
heu, ça, même sans tellement d'expérience, j'avais déja compris, merci !:D
Par contre, g bien l'impression que t'as pas compris ma question.

Reply

Marsh Posté le 11-07-2002 à 16:23:21    

--greg-- a écrit a écrit :

fous lui la paix bon sang




 
Mais !? on t'as demandé de faire le justicier toi !?
Si ça l'emmerde que je l'appel il est assez grand (et assez franc) pour me le dire.

Reply

Marsh Posté le 11-07-2002 à 16:23:59    

gfive a écrit a écrit :

Le compilateur ne cherche pas focrément à catcher tout ce qui est runtime exception.
 
Donc, les ClassCastException, NullPointerException, etc, ne sont pas catchées (sinon, dès que tu fais objet.toto(), ça pourrait lancer une NullPointerException...
 
C'estla JVM qui s'en occupe.




 
...Merci ! (dsl pr le post d'avant, ms c ce que j'pense. J'peux pas m'empêcher de le dire ! :D)

Reply

Marsh Posté le 11-07-2002 à 16:24:26    

el_gringo a écrit a écrit :

 
 
Mais !? on t'as demandé de faire le justicier toi !?
Si ça l'emmerde que je l'appel il est assez grand (et assez franc) pour me le dire.



je me le suis demandé tout seul!
et je crois qu'il te l'a deja dit, indirectement:)


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 11-07-2002 à 16:26:16    

Et, je pars en vacances vendredi, moi aussi! :D:D
Pour 2 semaines! :p

Reply

Marsh Posté le 11-07-2002 à 16:26:16   

Reply

Marsh Posté le 11-07-2002 à 16:30:41    

gfive a écrit a écrit :

Et, je pars en vacances vendredi, moi aussi! :D:D
Pour 2 semaines! :p




 
Hé, mais 'faut vous calmer les jeunes ! STOP, on arrête là, allez, apparement, on peut plus rien faire pour gfive et Dark, mais on arrête la casse. JE VEUX PLUS EN ENTENDRE UN SUCEPTIBLE DE M'AIDER EN JAVA ME DIRE QU'Y PART EN VACANCES.
Compris !? :D
Non mais c vrai quoi ! merde...

Reply

Marsh Posté le 11-07-2002 à 16:38:02    

el_gringo a écrit a écrit :

 
 
Hé, mais 'faut vous calmer les jeunes ! STOP, on arrête là, allez, apparement, on peut plus rien faire pour gfive et Dark, mais on arrête la casse. JE VEUX PLUS EN ENTENDRE UN SUCEPTIBLE DE M'AIDER EN JAVA ME DIRE QU'Y PART EN VACANCES.
Compris !? :D
Non mais c vrai quoi ! merde...




 
bon ben désolé si j ai compris a coté
mais jme casse bientot ca fera des vacance au autre forumeur

Reply

Marsh Posté le 11-07-2002 à 16:42:37    

Ne trouvant pas les expliquations tres claires, je resume:
 
Il y a 2 sortes d'exceptions:
    - celles heritant de RuntimeException (qui herite de Exception), le code n'est pas oblige' de les traiter. Par exemple la "division par zero" est runtime, tu peux choisir de l'ignorer, mais si tu l'ignore completement et qu'elle arrive, tu t'arretes.
 
    - celles heritant d'Exception (sans passer par RuntimeException). le code est oblige' de les traiter (les catcher ou les propager).

Reply

Marsh Posté le 11-07-2002 à 16:48:28    

Bien vu! :)

Reply

Marsh Posté le 11-07-2002 à 16:50:20    

- Renaud - a écrit a écrit :

Ne trouvant pas les expliquations tres claires, je resume:
 
Il y a 2 sortes d'exceptions:
    - celles heritant de RuntimeException (qui herite de Exception), le code n'est pas oblige' de les traiter. Par exemple la "division par zero" est runtime, tu peux choisir de l'ignorer, mais si tu l'ignore completement et qu'elle arrive, tu t'arretes.
 
    - celles heritant d'Exception (sans passer par RuntimeException). le code est oblige' de les traiter (les catcher ou les propager).




 
Merci Renaud. On te voit pas souvent ms t'as l'air de savoir de quoi tu parles.
Autre chose : si je traite pas un Runtime exception, j'imagine que l'exception va s'afficher quand même dans mon navigateur si elle se produit (elle va s'afficher à la brute, ss forme d'une Erreur 500). Tu crois pas !?


Message édité par El_gringo le 11-07-2002 à 16:51:44
Reply

Marsh Posté le 11-07-2002 à 17:01:20    

el_gringo a écrit a écrit :

 
 
Merci Renaud. On te voit pas souvent ms t'as l'air de savoir de quoi tu parles.
Autre chose : si je traite pas un Runtime exception, j'imagine que l'exception va s'afficher quand même dans mon navigateur si elle se produit (elle va s'afficher à la brute, ss forme d'une Erreur 500). Tu crois pas !?




oui
mais en jsp (c bien de ça que tu parles non?) tu peux rediriger vers une page d'erreur avec ça comme directive en haut de ta page:
<%@page errorPage="l'urlrelativedetapaged'erreur.jsp" %>
 
et dans ta page ou tu geres les erreurs tu mets
<%@page iserrorpage=true %>
(et là tu peux utiliser "exception" (je crois) qui est l'objet Exception qui à été lancé


Message édité par --greg-- le 11-07-2002 à 17:04:23

---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 11-07-2002 à 17:08:16    

--greg-- a écrit a écrit :

 
oui
mais en jsp (c bien de ça que tu parles non?) tu peux rediriger vers une page d'erreur avec ça comme directive en haut de ta page:
<%@page errorPage="l'urlrelativedetapaged'erreur.jsp" %>
 
et dans ta page ou tu geres les erreurs tu mets
<%@page iserrorpage=true %>
(et là tu peux utiliser "exception" (je crois) qui est l'objet Exception qui à été lancé




 
Merde, je suis lourd, g oublié de dire que je parle pour le jsp/servlet
Donc, ouais, ce que tu m'as dit pr rediriger les erreurs, j'avais vu, merci.
Par contre, ça, ça va si l'erreur se produit ds un jsp, ms si ça se produit ds une servlet !? tu connais un moyen de faire exactement la même redirection vers cette page isErrorPage qd une exception non catchée se produit !?

Reply

Marsh Posté le 11-07-2002 à 17:17:06    

bah, nomalement, les moteurs de servlets gèrent ça..Ils te mettent la ptrace de l'exception dans les logs et tout....

Reply

Marsh Posté le 11-07-2002 à 17:27:53    

gfive a écrit a écrit :

bah, nomalement, les moteurs de servlets gèrent ça..Ils te mettent la ptrace de l'exception dans les logs et tout....



oué mais avec juste des servlets tu peux pas (à ma connaissance) rediriger la requete vers une jsp qui gere l'erreur (par exemple en affichant un message "userfriendly" au lieu de la belle trace)
...


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 11-07-2002 à 17:37:04    

Euh....Bah, à la limite, tu fais une super-servlet dont héritent toutes tes servlets, et qui fait un gros try  { .... } catch(Throwable t) { affichage de ta jolie page }
 
et c bon.

Reply

Marsh Posté le 11-07-2002 à 17:38:40    

gfive a écrit a écrit :

Euh....Bah, à la limite, tu fais une super-servlet dont héritent toutes tes servlets, et qui fait un gros try  { .... } catch(Throwable t) { affichage de ta jolie page }
 
et c bon.




euh...
ouais...
moi ça ira hein :) je catche les erreurs là ou elles peuvent arriver et je gere au cas par cas:)
 


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 11-07-2002 à 17:42:39    

Ouais, enfin, le coup du try{ } catch de la mort, là, c'est justement pour gérer les quelques cas à la con qu'iul va fatalement te rester, pour évioter que l'utilisateur se retrouve comme deux ronds de flanc devant une erreur 500..Et toi, tu peux te faire un joli display de la trace, pour savoir ce qui se passe....genre tu fais une page :  
 
"oooh, la grosse bouse!!"
 
Merci d'envoyer le texte qui suit à ---greg---@---greg---.com
 
---------------------------------------
java.lang.NullPointerException
     ...
---------------------------------------

Reply

Marsh Posté le 11-07-2002 à 17:49:07    

gfive a écrit a écrit :

Ouais, enfin, le coup du try{ } catch de la mort, là, c'est justement pour gérer les quelques cas à la con qu'iul va fatalement te rester, pour évioter que l'utilisateur se retrouve comme deux ronds de flanc devant une erreur 500..Et toi, tu peux te faire un joli display de la trace, pour savoir ce qui se passe....genre tu fais une page :  
 
"oooh, la grosse bouse!!"
 
Merci d'envoyer le texte qui suit à ---greg---@---greg---.com
 
---------------------------------------
java.lang.NullPointerException
     ...
---------------------------------------




hmmmm oui peut etre


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 12-07-2002 à 08:39:57    

--greg-- a écrit a écrit :

 
euh...
ouais...
moi ça ira hein :) je catche les erreurs là ou elles peuvent arriver et je gere au cas par cas:)




 
me dis pas que tu catch tous les NullPointersException !?

Reply

Marsh Posté le 12-07-2002 à 10:37:48    

el_gringo a écrit a écrit :

 
 
me dis pas que tu catch tous les NullPointersException !?




ben non, je m'arrange pour qu'il n'y en ait pas
si une classe est susceptible de lancer un nullpointerexception c'est une merde, et si j'applique une methode qqconque sur un objet qui est susceptible d'etre null sans m'assurer qu'il ne l'est pas, c'est moi la merde
:D


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 12-07-2002 à 11:11:27    

Ouais, enfin, faut pas pousser, non plus, les bugs, ça arrive, et prévoir un machin pour pouvoir les détecter, c'est aussi un critère pour déterminer qui est une merde! :D:D

Reply

Marsh Posté le 12-07-2002 à 11:26:24    

gfive a écrit a écrit :

Ouais, enfin, faut pas pousser, non plus, les bugs, ça arrive, et prévoir un machin pour pouvoir les détecter, c'est aussi un critère pour déterminer qui est une merde! :D:D



ha ben oui, ce que je disais c'était sans compter le cas "bug", bien sur :)))
quand je disais "... qui est susceptible d'être null..." ça voulait dire "... qui dans le cas de l'application PEUT etre null sans que ce soit considéré comme un bug", du genre un parametre d'une URL qui n'est pas necessairement là.
on est d'accord?


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 12-07-2002 à 11:33:44    

Vu l'imminence des vacances, je vais pas me lancer des débats....
 
Surtout quand je suis d'accord!:D

Reply

Marsh Posté le 12-07-2002 à 11:36:45    

gfive a écrit a écrit :

Vu l'imminence des vacances, je vais pas me lancer des débats....
 
Surtout quand je suis d'accord!:D




Bon, va falloir que je m'y mette alors...
 
Je ne suis pas DU TOUT d'accord avec vous

Reply

Marsh Posté le 12-07-2002 à 11:40:01    

gfive a écrit a écrit :

Vu l'imminence des vacances, je vais pas me lancer des débats....
 
Surtout quand je suis d'accord!:D



:D


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 12-07-2002 à 11:40:12    

lorill a écrit a écrit :

 
Bon, va falloir que je m'y mette alors...
 
Je ne suis pas DU TOUT d'accord avec vous



vi...?


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 12-07-2002 à 11:41:45    

lorill a écrit a écrit :

 
Bon, va falloir que je m'y mette alors...
 
Je ne suis pas DU TOUT d'accord avec vous




 
Je m'en fous...j'ai vacances...et je te merde, na! :D

Reply

Marsh Posté le 12-07-2002 à 11:41:59    

--greg-- a écrit a écrit :

vi...?




 
non, rien.

Reply

Marsh Posté le 12-07-2002 à 11:54:00    

lorill a écrit a écrit :

 
 
non, rien.



[:biscuiteur]  
 
 
 :D


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 12-07-2002 à 12:04:23    

C'est n'importe quoi, ce topic! :D

Reply

Marsh Posté le 12-07-2002 à 14:38:34    

gfive a écrit a écrit :

C'est n'importe quoi, ce topic! :D




 
Merci, c gentil de m'avoir répondu, et du coup, je vous offre mon topic. vous pouvez y raconter n'importe quoi, le faire virer sur les transexuels du pôle nord qui taille leurs string dans de la peau de phoque, ou n'importe quoi d'autre. Il est à vous ce topic. c pas gentil ça !? :D

Reply

Marsh Posté le 21-07-2002 à 15:41:33    

--greg-- a écrit a écrit :

 
ben non, je m'arrange pour qu'il n'y en ait pas
si une classe est susceptible de lancer un nullpointerexception c'est une merde, et si j'applique une methode qqconque sur un objet qui est susceptible d'etre null sans m'assurer qu'il ne l'est pas, c'est moi la merde
:D




 
 [:xp1700]


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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