在编译时有效地获取java源代码中的行号

时间:2015-06-23 19:06:04

标签: java eclipse gradle

我有一个异常类,我想在其中传递当前行号

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

有没有办法在没有硬编码的情况下将亚麻布作为72? eclipse是否提供了在编译时被替换为硬编码行号的任何东西。所以我不必把丑陋的硬代码行号放在

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

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

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

我不需要记录整个堆栈跟踪,并且不必为所有异常填充堆栈跟踪。我想添加引发异常的行号。 可以在编译时解析为常量的任何代码吗?

如果没有那么我可以写一个简单的预处理我的代码,它可以读取行并用行号替换一个特殊的常量_my_line_num但是应该存在一些东西。

我觉得像gradle这样的构建工具可以做到这一点。

1 个答案:

答案 0 :(得分:1)

我不确定它是否good solution,但你可以放置它:

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

作为您的例外承包商的参数,并根据需要显示。