我们可以把整个异常传地到 Javascript 中。如果在 dwr.xml 中加入转换异常本身的能力:
在这里例子中 FunkyException 被指定,因为它不仅仅包括一个消息,它还包括一些关于异常的额外数据。 例如,SQLException 包含错误号,SAX 异常包含错误的行和列等等。所以我们可以把上面的例如改为:
public class Remote {
public String getData() {
Date when = new Date();
throw new FunkyException("message", when);
// FunkyException有一个getWhen()方法
}
}
然后在 Javascript 中是这样的:
function eh(msg, ex) {
alert(msg + ", date=" + ex.when);
}
DWREngine.setErrorHandler(eh);
Remote.getData(function(data) { alert(data); });
结果会是一个 eh()错误处理器调用的 alert 框,上面有这些信息:“message, date=Mon Jan 01 2008 10:00:00 GMT+0100”。
被传递到错误处理器的 ex 对象会包含异常在服务端的所有属性,但是异常栈信息没有。