/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Hvem kaldte metoden??
Fra : Michael Banzon


Dato : 08-05-03 09:48

Hej

Jeg sidder med en metode, der gerne skulle vide hvem (hvilket objekt, evt.
linienummer)
der har kaldt den. Men jeg kan ikke lige huske hvordan det gøres
Er der nogen andre der kan huske det??

/ Michael



 
 
Søren Berg Glasius (08-05-2003)
Kommentar
Fra : Søren Berg Glasius


Dato : 08-05-03 10:03

> Jeg sidder med en metode, der gerne skulle vide hvem (hvilket objekt, evt.
> linienummer)
> der har kaldt den. Men jeg kan ikke lige huske hvordan det gøres
> Er der nogen andre der kan huske det??

Hej Michael

Så vidt jeg husker:

new Exception().printStackTrace();

/Søren



Michael Banzon (08-05-2003)
Kommentar
Fra : Michael Banzon


Dato : 08-05-03 10:34

"Søren Berg Glasius" <spamfree@privat-post.dk> skrev i en meddelelse
news:b9d6ft$2b33$1@news.cybercity.dk...
> new Exception().printStackTrace();

Ja, det nåede jeg også til, men det "printer" jo hele retracet fra stacken,
og det var kun navnet + evt. linienummer på/i den metode der foretog
kaldet...

Jeg sidder og kigger på Throwable.getStackTrace() ... ...

/ Michael



Søren Berg Glasius (08-05-2003)
Kommentar
Fra : Søren Berg Glasius


Dato : 08-05-03 11:28

> Ja, det nåede jeg også til, men det "printer" jo hele retracet fra
stacken,
> og det var kun navnet + evt. linienummer på/i den metode der foretog
> kaldet...
>
> Jeg sidder og kigger på Throwable.getStackTrace() ... ...

Hej Michael,

Prøv med

java.io.StringWriter out = new java.io.StringWriter();

new Exception().printStackTrace(out);

String stack = out.toString()

out.close();

Så kan du jo bare parse 'stack' og finde nr. 2 eller 3 linie som indeholder
den, som har lavet kaldet.

/Søren



Michael Banzon (08-05-2003)
Kommentar
Fra : Michael Banzon


Dato : 08-05-03 12:11

"Søren Berg Glasius" <spamfree@privat-post.dk> skrev i en meddelelse
news:b9dbdj$2ig3$1@news.cybercity.dk...
> Så kan du jo bare parse 'stack' og finde nr. 2 eller 3 linie som
indeholder
> den, som har lavet kaldet.

Hmm... jeg kalder bare:

StackTraceElement caller = ((new Throwable()).getStackTrace())[1];

Og så hiver jeg de nødvendige data ud af "caller" med hhv. .getClassName(),
..getMethod()
og .getLineNumber()

Det virker umiddelbart noget nemmere end selv at skulle kaste en Exception
og
så parse output fra den...

/ Michael



Søren Berg Glasius (08-05-2003)
Kommentar
Fra : Søren Berg Glasius


Dato : 08-05-03 12:21

> StackTraceElement caller = ((new Throwable()).getStackTrace())[1];
>
> Og så hiver jeg de nødvendige data ud af "caller" med hhv.
..getClassName(),
> .getMethod()
> og .getLineNumber()
>
> Det virker umiddelbart noget nemmere end selv at skulle kaste en Exception
> og
> så parse output fra den...
>
Hej Michael

Vældig meget mere elegant - det må jeg indrømme! Men jeg kaster i øvrigt
heller ikke en exception - og Exception er jo en nedarvning af Throwable.
Jeg kendte blot ikke til "StackTraceElement" - så derfor min "anderledes"
løsning

/Søren



Michael Banzon (08-05-2003)
Kommentar
Fra : Michael Banzon


Dato : 08-05-03 12:37

"Søren Berg Glasius" <spamfree@privat-post.dk> skrev i en meddelelse
news:b9deia$2n78$1@news.cybercity.dk...
> Vældig meget mere elegant - det må jeg indrømme!



> Men jeg kaster i øvrigt heller ikke en exception

Nej, sorry...

/ Michael



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste