在Java中是否有一种通过反射或某些强大的API动态获取当前行号的方法?就像当异常发生时,堆栈跟踪中打印出行号一样:
at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:348)
现在有没有一种像下面代码那样打印或记录的方法?
log.error("Error in: " + this.getClass.getName() + "at line #"+ this.getClass.getActualLine());
你可能会问,为什么我不直接打印行号呢?因为在特定的log.error()方法调用之前,代码可能会被删除或添加。
new Throwable
并访问堆栈跟踪元素。参见 https://dev59.com/zHVD5IYBdhLWcg3wBWzd - Andreas FesterThrowable
:Thread.getStackTrace()
就足够了。 (翻译:你可以使用Thread.getStackTrace()
方法获取线程的堆栈轨迹信息,无需创建一个Throwable
对象。) - Joachim SauerThread.currentThread().getStackTrace()
不会... - Andreas Fester