Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Effectively get line numbers in java source code at compile time

I have a exception class where in which i want to pass the current line number

     line 70:
     line 71: throw new 
              LightException(FailureType.NOT_FOUND,this.getClass().getName(),linenum);

Is there a way to get linenum as 72 here without hardcoding it? Does eclipse offer anything that would get replaced into hardcoded line numbers at compile time.So that i don't have to put ugly hard-code line numbers

class LightException(FailureType type,String className,int lineNum)  extends RuntimeException 
{

LightException(FailureType type,String className,int lineNum){..
//
}

@Override
@Override public Throwable fillInStackTrace() { 
return this;
 }
}

I do not need to log the entire stack trace and unnecessarily filling the stack trace for all exceptions.I want to add the line number from where the exception was thrown. Any code which can be resolved at compile time into constants?

If not then I can write a simple utitly to pre-process my code which can read lines and replace a special constant _my_line_num by the line number but something should exist.

I feel some build tool like gradle can do this.

like image 645
bl3e Avatar asked Jun 23 '15 19:06

bl3e


1 Answers

I am not sure if it is good solution or not but you can place this:

int linenumber = Thread.currentThread().getStackTrace()[2].getLineNumber();

as a parameter in your exception's contractor and display it as you need.

like image 120
Jegg Avatar answered Sep 21 '22 15:09

Jegg