在我的日志中显示如下所示的一些例外:(文本已被修改以隐藏项目信息)
java.util.concurrent.ExecutionException:org.xxx.BBBException<br>
at ....<br>
...<br>
Caused by: org.xxx.BBBException: null<br>
at ....<br>
...<br>
为什么在引发条款中有“null”?
由我们制作的BBBException扩展了Exception并且没有覆盖toString()。 在某些情况下,会调用FutureTask.setException(new BBBException(“RPC timed out”))并在日志中预期BBBException。 但是,异常的详细信息不是我们在程序中设置的,第一行和Caused by子句中的文本甚至不匹配(第一行中没有“:null”)。 任何人都知道为什么会这样?谢谢!
环境:java 6,更新21,centos 64位,java 64位,混合模式。
答案 0 :(得分:2)
我怀疑你 实际创建了一个没有消息的新BBBException
,或者你的BBBException(String)
构造函数没有将消息传递给超级构造函数(它应该通过super(message)
)。基本上它是说:这是一个没有消息的例外。
如果没有看到任何代码,很难告诉完全错误。
答案 1 :(得分:1)
org.xxx.BBBException: null
抛出null
消息(使用默认构造函数)。抛出一些消息(如果它支持):
throw new BBBException("Danger! High Voltage")
如果这不起作用,则意味着BBBException(String msg)
构造函数写得不好。它应该是这样的:
BBBException(String msg) {
super(msg);
}