5

我发现了一个Throwable错误。

catch (Throwable t){    
    System.out.println(t.getCause().getMessage());
}

当我在 line 上放置断点System.out.并将鼠标悬停在 (Eclipse)t变量上时,Eclipse 会向我显示原因:java.lang.NoClassDefFoundError: myclass

但是当我释放断点时,我得到nullt.getCause().

为什么会这样?我怎样才能得到原因字符串。

更新:

如果我抓住也会发生同样的情况

catch (NoClassDefFoundError e){
}
4

1 回答 1

5

答案在文档中 -Throwable#getCause

返回此 throwable 的原因,或者null如果原因不存在或未知。(原因是导致这个 throwable 被抛出的 throwable。)

所以当你这样做时:

t.getCause().getMessage()

这就像写:

null.getMessage()

这当然会导致NullPointerException.

你可以简单地做:

catch (NoClassDefFoundError e){
   System.out.println(e.getMessage);
}
于 2014-04-07T06:06:22.943 回答