经过一些调试,我发现"com.google.gwt.event.shared.UmbrellaException:One或更多的异常捕获,请参阅full set in UmbrellaException#getCauses‘when full:nsIDOMEventListener::handleEvent“(在web模型中)是由运行时空pointer.Question引起的。model.Actually是为什么这种运行时空指针异常没有在主机model.Actually下抛出,blow代码不会抛出任何异常,甚至在我的笔记本电脑(gwt 2.4+java 7 64bit+ubuntu 12.04 64bit+eclipse 3.7)中会弹出警报(gwt 2.4+java 7 64bit+ubuntu 12.04 64bit+eclipse 3.7).Anybody知道如何在JavascriptObject指针上发生运行时null时强制执行eclipse抛出异常。
public class GWTTest implements EntryPoint
{
public static class JsObj extends JavaScriptObject
{
protected JsObj()
{
}
public final native void setValue(String Value)/*-{
this.Value=Value;
alert(Value);
}-*/;
}
public void onModuleLoad()
{
JsObj jsObj = null;
jsObj.setValue("val");
}
}发布于 2012-04-09 23:51:31
编译器执行许多优化以将GWT/Java转换为Javascript。
也就是说..。当我编译您的示例时,onModuleLoad()的主体被优化为:
null.nullMethod();这是GWT编译器表示‘这永远不会起作用’的方式--它注意到该值始终为null,因此该方法不能在其上调用。但在开发模式下,显然空对象指向JavaScript中的window对象。这是在http://code.google.com/p/google-web-toolkit/issues/detail?id=6625的GWT项目中提交的。
如果您需要确保不对null执行操作,请在调用方法之前测试null -如果在像您这样的测试中,值始终为null,则会对方法进行优化。运行时异常无论如何都不应该用于控制代码,因此您永远不应该依赖NullPointerException在代码中执行任何操作。
https://stackoverflow.com/questions/10070254
复制相似问题