java - 从堆栈跟踪 : "MyClass.java:1" 中的第一行调用方法

标签 java exception stack-trace

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

当我在堆栈跟踪中发现调用位于第一行时,这意味着什么,例如:

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 {...

最佳答案

我在调试过程中也看到过这种现象 - 单步执行方法有时会先跳到声明类的第一行,然后再跳到实际方法。由于无法给您提供引用,我认为这与某些情况下重写方法的分派(dispatch)有关(协变返回类型至少是一种)。在这些情况下,编译器需要插入一个合成桥接方法,该方法在“真实”方法之前被调用,我的猜测是该方法的有效行号为 1。

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

关于java - 从堆栈跟踪 : "MyClass.java:1" 中的第一行调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5258943/

相关文章:

php - 解码 Google Closure 编译的 JavaScript 堆栈跟踪

windows - 如何在 Windows 上以编程方式从转储文件中获取堆栈跟踪

variables - 有没有办法获取范围内变量的名称和值?

java - XHTML 到 java 转换的最佳方法

java - 我是否可以在 LDAP/Active Directory 中验证用户的密码,而无需以该用户身份登录?

java - 我收到 "unreported exception ioexception; must be kept or declared to be thrown"

java捕获异常并继续执行

java - 为什么 Final 字段在 Java 中不能是 Volatile?

java - 如何设置已具有背景图像的 JButton 的大小?

java - ReSTLet 在 HTTPS BindException 上与 Jetty 一起运行