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

时间:2011-03-10 11:19:46

标签: 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 ???
    ...

在第一行,我的班级是评论,一切都正确编译

MyClass.java:

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

import ...

public class MyClass implements MyInterface {...

1 个答案:

答案 0 :(得分:5)

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

无论如何,我认为你不必担心 - 正如你所看到的,你自己的myMethod实现会在紧随其后的第76行被成功调用。