Java - 获取代码中的位置(包/类/方法)

时间:2011-02-02 09:39:40

标签: java error-handling

好的,可能是一个愚蠢的问题。 我正在研究一个java项目,我希望能够轻松获取当前代码的位置,即Package / Class / Method,并将其打印到输出。

例如,我想在错误的情况下输出包/类/方法信息,以便能够识别错误发生的确切方法。

是否有代码可以提供此信息?

3 个答案:

答案 0 :(得分:4)

stacktrace JVM它包含所有这些信息,只需记录下来。

以编程方式如果要确定

StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace()

根据Javadocs

  

[...]数组的第一个元素表示堆栈的顶部,这是序列中最近的方法调用。数组的最后一个元素表示堆栈的底部,这是序列中最近的方法调用。

StackTraceElement包含getClassName()getFileName()getLineNumber()getMethodName()

答案 1 :(得分:4)

出现错误时创建例外。如果要将其打印到控制台,则可以在异常上调用exception.printstacktrace();方法。

最好使用像log4j这样的日志框架,你可以logger.error( "message", exception );,并在日志中获得堆栈跟踪。

答案 2 :(得分:2)

不要选择这么复杂的解决方案。

如果您使用的是log4j,那么您已经完成了。 使用如下模式:%-5p%d [%t]%C {1}。%M(%L):%m%n

%t是当前线程 %C {1}是类的名称(省略{1},您将获得包的完整限定名称) %M是方法的名称 %L是行号 有关详情,请点击此处:http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PatternLayout.html

请记住,登录方法名称或行号会降低性能。 切勿在生产系统中这样做。