我有这样的一个来源:意外initCause行为我不能克服
Exception e = new Exception("Exception");
IOException ioE = new IOException("An exception cause");
e.initCause(ioE);
我正在尝试设置例外“E”的原因,我得到的是被设定为自身的异常!
我只是不明白。我的代码是否有意义?还是我疯了?
我有这样的一个来源:意外initCause行为我不能克服
Exception e = new Exception("Exception");
IOException ioE = new IOException("An exception cause");
e.initCause(ioE);
我正在尝试设置例外“E”的原因,我得到的是被设定为自身的异常!
我只是不明白。我的代码是否有意义?还是我疯了?
似乎工作:
package com.daniel.test;
import java.io.IOException;
public class Test {
public static void main(String[] args) throws Exception{
Exception e = new Exception("Exception");
IOException ioE = new IOException("An exception cause");
e.initCause(ioE);
throw e;
}
}
输出是:
Exception in thread "main" java.lang.Exception: Exception
at com.daniel.test.Test.main(Test.java:8)
Caused by: java.io.IOException: An exception cause
at com.daniel.test.Test.main(Test.java:9)
你可以看到原因设置正确。
我相信你在概念上误解了initCause的工作原理。请参阅Java API,它说
它通常在构造函数中调用,或者在创建throwable后立即调用 。如果这个throwable是用 Throwable(Throwable)或Throwable(String,Throwable)创建的,则该方法 甚至不能被调用一次。
http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Throwable.html#initCause(java.lang.Throwable)
你确定你在看什么?显示的代码对我来说工作正常,并将异常'e'的原因设置为IOException'ioe'。 – Perception 2012-03-28 00:08:37
我再次尝试,也许我只是被GWT开发模式抛出(我正在使用这个工具)。 – 2012-03-28 00:10:02
似乎GWT串行器不编码“原因”。我没有疯狂,被GWT玩过。 – 2012-03-28 13:46:52