# Zeilennummer ausgeben



## modad (23. Mai 2007)

Guten Tag Zusammen,

gibt es eine Möglichkeit die Zeilennummern im Quellcode wärend der Laufzeit zu bestimmen? Also so was, im Editor:


```
1    public static void main(String[] args) {
2       Main main=new Main();
3       
5        System.out.println("Hallo du bist in Zeile " + X ")
4
    }
```


und das ich das systemOut einfach immer nehmen kann, wo ich es brauche im Quellcode verarbeite und ich bekomme immer die Zeilennummer in dem der Aufruf steht in der Ausgabe(in diesem Beispiel "Hallo du bist in Zeile 5").

Geht so was?

Viele Grüße
Modad[/code]


----------



## Gast (23. Mai 2007)

über den StackTrace sollte das gehen


----------



## Hilefoks (23. Mai 2007)

Meines Wissens keine saubere. Die einzige Lösung die ich kenne ist das du eine Exception auslöst und diese gleich wieder fängst und dann dessen Stacktrace auswertest.... allerdings würde ich das auf keinen Fall so machen, da es doch äußerst unsauber und auch extrem langsam ist.


```
public class Test {
        public static void main(String[] args) {
                try { throw new Exception(); }
                catch(Exception e) {
                        System.out.println(e.getStackTrace()[0].getLineNumber());
                }
        }
}
```

Ausgabe ist: 3 _(Da da die Exception ausgelöst wurde)_ 
Allerdings, wie gesagt, benutzt das bitte nicht!

MfG,
Hilefoks


----------



## Marede (23. Mai 2007)

Hi,

dann würde alternativ ohne try/catch auch folgende Codezeile genügen:


```
System.out.println(new Throwable().getStackTrace[0].getLineNumber());
```

Allerdings kann ich zur Performance im Verhältnis zu einer wirklich ausgelösten Exception nichts sagen, da mir die Erfahrungswerte fehlen. 
Für mich war 
	
	
	
	





```
new Throwable().printStackTrace();
```
 immer die Notlösung, wenn mir bei einer Fehlersuche der Debugger nicht helfen wollte/konnte und ich trotzdem wissen wollte, wie der Ablauf der aufgerufenen Methoden war.  :wink:


----------



## SlaterB (23. Mai 2007)

Thread.currentThread().getStackTrace()...


----------



## Gast (23. Mai 2007)

Log4j


----------



## modad (23. Mai 2007)

Log4J hab ich auch, aber das fand ich zu umständlich, um nur mal eben schnell eine kleine DebugAusgabe zu machen. Und weil das "normale" debuggen bei Server-Client bei mir nie richtrig funktioniert, habe ich nun mal


```
System.out.println(new Throwable().getStackTrace[0].getLineNumber());
```

eingebaut, funktioniert wunderbar, und fliegt wenn alles läuft eh wieder raus. Dank dir !!!!


----------



## byte (23. Mai 2007)

modad hat gesagt.:
			
		

> Log4J hab ich auch, aber das fand ich zu umständlich, um nur mal eben schnell eine kleine DebugAusgabe zu machen.



Aber genau das ist der Sinn von log4j bzw. anderen Loggern. :roll:


----------

