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

  FORUM HardWare.fr
  Programmation
  Java

  java - introspection

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

java - introspection

n°646485
gaaar
Posté le 18-02-2004 à 09:29:59  profilanswer
 


Salut
 
j'aimerais savoir s'il existe un moyen de connaitre le nom de la méthode dans laquelle on se trouve, à l'exécution (l'idée étant de faire une méthode d'affichage d'erreur généralisée).

mood
Publicité
Posté le 18-02-2004 à 09:29:59  profilanswer
 

n°646493
benou
Posté le 18-02-2004 à 09:43:59  profilanswer
 

Non. A part en utilisant les stacktrace.

  • En jdk <= 1.3 c'est difficile : il faut parser le flux que tu peux récupérer en faisant un e.printStackTrace() dans un buffer
  • En jdk1.4 c'est déjà plus facile : tu peux récupérer les StackTraceElement d'une exception et tu peux récupérer dessus le nom de la méthode.
  • En jdk1.5 c'est encore plus facile : tu n'es plus obligé de générer une exception pour obtenir les stackTrace : tu peux directement récupérer les StackTraceElement d'un Thread


Message édité par benou le 18-02-2004 à 09:44:46

---------------
ma vie, mon oeuvre - HomePlayer
n°646527
nraynaud
lol
Posté le 18-02-2004 à 10:17:55  profilanswer
 

ah le bon vieux currentContext de smalltalk.
 
 
Par contre, je suis étonné qu'un débutant ait besoin de ça. Que veux-tu faire exactement ?


---------------
trainoo.com, c'est fini
n°646540
gaaar
Posté le 18-02-2004 à 10:22:38  profilanswer
 

C'est ce qui me fallait, merci.
 
J'avais besoin de ça pour un truc tout bête :
en plus d'afficher l'exception, je voulais afficher le nom de la méthode d'où elle était lancée (sans afficher toute la pile).
La solution était pas bien loin en fait  :o


Message édité par gaaar le 18-02-2004 à 10:28:38
n°646543
uriel
blood pt.2
Posté le 18-02-2004 à 10:27:36  profilanswer
 

nraynaud a écrit :


Par contre, je suis étonné qu'un débutant ait besoin de ça. Que veux-tu faire exactement ?


 
pourquoi un debutant ? :??:


---------------
IVG en france
n°646545
gaaar
Posté le 18-02-2004 à 10:29:36  profilanswer
 

c'est vrai, d'où tu sort ça ?

n°646551
uriel
blood pt.2
Posté le 18-02-2004 à 10:34:20  profilanswer
 

benou a écrit :


  • En jdk1.5 c'est encore plus facile : tu n'es plus obligé de générer une exception pour obtenir les stackTrace : tu peux directement récupérer les StackTraceElement d'un Thread



 
chouette ca  :)


---------------
IVG en france
n°646552
nraynaud
lol
Posté le 18-02-2004 à 10:34:46  profilanswer
 

uriel a écrit :

pourquoi un debutant ? :??:

il cherche pas encore tout seul dans les docs ?
 
 
par contre, je me suis planté : il avait effectivement besoin de ça (enfin, pas exactement du contexte courant, mais de celui d'une exception), exactement dans une des seules utilisations correctes de ce truc.


---------------
trainoo.com, c'est fini
n°647218
benou
Posté le 18-02-2004 à 15:16:39  profilanswer
 

uriel a écrit :


chouette ca  :)  


ouep. :)
 
je me suis toujours étonné qu'il faille passer par une exception pour pouvoir afficher la stackTrace. C'est quand même bizarer que ca ait pas été disponible avant  :sweat:


---------------
ma vie, mon oeuvre - HomePlayer
n°647276
nraynaud
lol
Posté le 18-02-2004 à 15:30:40  profilanswer
 

benou a écrit :

je me suis toujours étonné qu'il faille passer par une exception pour pouvoir afficher la stackTrace. C'est quand même bizarer que ca ait pas été disponible avant  :sweat:

Non, c'est un bordel monstre, mais c'est obligatoire pour les exceptions.
 
Il faut :
 1) retrouver d'ou vient tout le code qui a été exécuté (donc en cas d'inlining, il faut poser des marqueurs, aller chercher les méthodes)
 
 2) instancier tous les objets représentant la pile, chercher les arguments qui auraient dû être passés sur la pile (mais qui ne l'ont pas forcément été pour cause d'optimisation)
 
 
bref, c'est un vrai bordel pour l'optimiseur.
 
En plus en dehors des exceptions, il ne doit pas y avoir beaucoup d'utilisations à ça (en dehors de trucs très très dynamiques et inoptimisables : sérialisation de tâches dans le langage, manipulation du flux d'exécution, continuations).


---------------
trainoo.com, c'est fini
mood
Publicité
Posté le 18-02-2004 à 15:30:40  profilanswer
 

n°647286
uriel
blood pt.2
Posté le 18-02-2004 à 15:34:01  profilanswer
 

non, mais moi ca me permettais de suivre le programme, un genre de debugger à moi et passer par les exceptions, c'etait chiant (en plsu je voyais pas le pourquoi)


Message édité par uriel le 18-02-2004 à 15:34:32

---------------
IVG en france
n°647293
nraynaud
lol
Posté le 18-02-2004 à 15:37:18  profilanswer
 

uriel a écrit :

non, mais moi ca me permettais de suivre le programme, un genre de debugger à moi et passer par les exceptions, c'etait chiant (en plsu je voyais pas le pourquoi)

ça ça se fait au niveau VM, il y a un protocole de dialogue avec les JVM.


---------------
trainoo.com, c'est fini
n°647550
the real m​oins moins
Posté le 18-02-2004 à 17:44:00  profilanswer
 

nraynaud a écrit :

ah le bon vieux currentContext de smalltalk.

c'est jouable en java aussi, y'a un paquets de frameworks AOP qui le font (savoir dans quelle methode on se trouve, ie acceder à la pile d'appels)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°647553
nraynaud
lol
Posté le 18-02-2004 à 17:46:40  profilanswer
 

the real moins moins a écrit :

c'est jouable en java aussi, y'a un paquets de frameworks AOP qui le font (savoir dans quelle methode on se trouve, ie acceder à la pile d'appels)

bah oui, tu lances une exception, tu la catches et tu regardes la stacktrace.
 
ou alors (si le temps ne compte pas) tu poses des balises en entrée et (plus dur) en sortie de fonction.


---------------
trainoo.com, c'est fini
n°647557
the real m​oins moins
Posté le 18-02-2004 à 17:50:19  profilanswer
 

nraynaud a écrit :

bah oui, tu lances une exception, tu la catches et tu regardes la stacktrace.
 
ou alors (si le temps ne compte pas) tu poses des balises en entrée et (plus dur) en sortie de fonction.

euh pour l'exception, vu le coût, je doute que les frameworks tel aspectj, aspectwerkz ou meme nanning (qui d'apres son auteur est moins performant) fassent ça.
 
par contre ils vont probablement brouter le bytecode à la volée, oui..


Message édité par the real moins moins le 18-02-2004 à 17:50:33

---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°647559
_guigui_
Posté le 18-02-2004 à 17:51:31  profilanswer
 

sinon au lieu de développer en spécifique un système de gestion d'erreurs, log4j fait ca de base aussi :)

n°647564
the real m​oins moins
Posté le 18-02-2004 à 17:53:57  profilanswer
 

moi je vote pour l'aop, splus propre :o


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°647603
benou
Posté le 18-02-2004 à 18:33:31  profilanswer
 

nraynaud a écrit :

bah oui, tu lances une exception, tu la catches et tu regardes la stacktrace.


pas besoin de la lancer/catcher : suffit de la créer ...


---------------
ma vie, mon oeuvre - HomePlayer
n°647615
nraynaud
lol
Posté le 18-02-2004 à 18:44:48  profilanswer
 

benou a écrit :


pas besoin de la lancer/catcher : suffit de la créer ...

'tain, t'as raison, je pensais que c'était le "throw" qui remplissait la trace, mais c'est le constructeur. C'est à moitié dangereux ça !


---------------
trainoo.com, c'est fini

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  java - introspection

 

Sujets relatifs
[Java] encore les hashmaps ! (recup la clé ?)[JAVA] [Débutant] Mettre en couleur les onglets d'un JTabbedPane ?
[JAVA]récupérer une saisie clavier[JAVA] Polices (Font) dispo en java
[JAVA] Centrer le texte d'une JTextArea[JAVA] Utiliser KeyListener pour une exécution en mode console
rafraichissement en java[JAVA] Interroger un serveur pour avoir ses caractéristiques technique
[java ]recuperer la liste (complete) des methodes via introspection[Java] Introspection et instances
Plus de sujets relatifs à : java - introspection


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR