程序跑偏了,无法解释,但我不信

THEBEST 2009-11-27 05:57:12
public class Temp {

public static void f() {
System.out.println(new Throwable().getStackTrace()[1].getMethodName());
}

public static void main(String[] args) throws Exception {
Temp.f();
}
}

按道理应该是输出 main 的,单独测试也是这样的,但生产环境的程序不是这样的简单,在f()的实现中是有一些别的调用的。。。

但它打印出来的居然是f这个名字,后面因为这个名字不对就抛出异常了,我的疑问是为什么会打印出f呢,什么情况下会打印出f呢?考虑下我的程序并不是上面的这样的简单,但逻辑是这样的,就是在main中调用一个函数,然后在这个函数中通过new Trhowable的方式来取到调用该函数的函数名。
...全文
147 2 打赏 收藏 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
bawgiitx 2009-11-27
  • 打赏
  • 举报
回复
NetBeans
run:
main
成功生成(总时间:0 秒)
cs207 2009-11-27
  • 打赏
  • 举报
回复
试过代码,的确是输入main。 楼主解释下更详细的环境把。

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧