在stacktrace中从第一行调用方法:"MyClass.java:1"

luk*_*ymo 2 java exception stack-trace

在我的项目中,我使用log4j来记录错误和许多框架:AOP,spring等.

当我在stacktrace中调用第一行时,这意味着什么,例如:

com.foo.bar.MyException: Error
    at com.foo.bar.MyClass.handleException(MyClass.java:92)
    at com.foo.bar.MyClass.myMethod(MyClass.java:76)
    at com.foo.bar.MyClass.myMethod(MyClass.java:1) // <- here ???
    ...
Run Code Online (Sandbox Code Playgroud)

在第一行,我的类是注释,一切都正确编译

MyClass.java:

/* Copyright 2011 */
package com.foo.bar;

import ...

public class MyClass implements MyInterface {...
Run Code Online (Sandbox Code Playgroud)

And*_*yle 5

我在调试过程中也看到了这种现象 - 步入某个方法有时会先跳到声明类的第一行,然后是实际的方法.在没有能够为您提供参考的情况下,我认为这与在某些情况下调度重写方法有关(协变返回类型至少为一个).在这些情况下,编译器需要插入一个在"真实"方法之前调用的合成桥接方法,我猜这个方法的有效行数为1.

在任何情况下,我都不认为这是你需要担心的事情 - 正如你所看到的,你自己的myMethod实现在之后的第76行成功调用.