web程序莫名弹出错误提示框(dwr),处理方法。产生原因有待思考
2012-12-15 12:44
513 查看
做项目过程中发现使用DWR方式调用远程方法,有时会莫名的弹出alert框,内容为“error”。是有可能返回空值或者直接错误,必须做出相应的异常处理:
Remote.method(params,function(data){
//服务端执行后客户端的逻辑,如
alert("服务端执行后返回的数据:"+data);
});
Remote->处理类,method->类中方法,params->method方法中参数,function->回调方法,data->回调方法返回的数据。
第一个参数为客户端传向服务端的数据,最后一个参数直接就是一个回调函数。因为服务端根据 Java 对象生成的 js 代码就是:
Remote.method = function(p0, callback) {
dwr.engine._execute(Remote._path, 'Remote', 'method', p0, callback);
}
如果远程方法在处理请求时抛出了异常,DWR 只会给出alert("Error") 简单显示错,所以需要去琢磨如何主动捕获这种错误,更友好的展示给用户。所以若碰到远程调用的异常
那个alert("Error") 其实是 DWR 的全局错误处理,可通过 dwr.engine.setErrorHandler(errorHandler) 来改变它的默认行为的,如
function errh(errorString, exception) {
alert("提示你自定义的全局出错信息。");
}
dwr.engine.setErrorHandler(errh);
也许我们很少这么做,因为全局性的错误处理满足不了个性化的远程调用。我们可以把错误处理 errorHandler 写在远程调用的函数参数中。回头看前面那个 callback,当它是一个函数时,就是个成功调用后的处理函数,它也可以是个包含几个函数的对象,此时远程调用就要这么写:
Remote.method(params,{
callback:function(data){ //调用成功时的处理函数
//服务端执行后客户端的逻辑,如
alert("服务端执行后返回的数据:"+data);
},
errorHandler:function(errorString, exception) {//执行异常时
alert('修改 XXX 时出错,请检查 XXX 云云:'+ errorString)
}
}
);
更深入的,callback 中不可以包括另外两个函数属性:exceptionHandler、warningHandler 和 textHtmlHandler。没有 exceptionHandler 处理函数就会去应用 errorHandler 函数,并且如果在 callback 函数中的 js 出错也会跑到 errorHandler 去执行的。
再,还能在 dwr.xml 中配置有关异常的 convert,如:<convert match="java.lang.Exception" converter="exception"/>,通过 errorHandler 的 errorString、exception 获取更详细的信息。
Remote.method(params,function(data){
//服务端执行后客户端的逻辑,如
alert("服务端执行后返回的数据:"+data);
});
Remote->处理类,method->类中方法,params->method方法中参数,function->回调方法,data->回调方法返回的数据。
第一个参数为客户端传向服务端的数据,最后一个参数直接就是一个回调函数。因为服务端根据 Java 对象生成的 js 代码就是:
Remote.method = function(p0, callback) {
dwr.engine._execute(Remote._path, 'Remote', 'method', p0, callback);
}
如果远程方法在处理请求时抛出了异常,DWR 只会给出alert("Error") 简单显示错,所以需要去琢磨如何主动捕获这种错误,更友好的展示给用户。所以若碰到远程调用的异常
那个alert("Error") 其实是 DWR 的全局错误处理,可通过 dwr.engine.setErrorHandler(errorHandler) 来改变它的默认行为的,如
function errh(errorString, exception) {
alert("提示你自定义的全局出错信息。");
}
dwr.engine.setErrorHandler(errh);
也许我们很少这么做,因为全局性的错误处理满足不了个性化的远程调用。我们可以把错误处理 errorHandler 写在远程调用的函数参数中。回头看前面那个 callback,当它是一个函数时,就是个成功调用后的处理函数,它也可以是个包含几个函数的对象,此时远程调用就要这么写:
Remote.method(params,{
callback:function(data){ //调用成功时的处理函数
//服务端执行后客户端的逻辑,如
alert("服务端执行后返回的数据:"+data);
},
errorHandler:function(errorString, exception) {//执行异常时
alert('修改 XXX 时出错,请检查 XXX 云云:'+ errorString)
}
}
);
更深入的,callback 中不可以包括另外两个函数属性:exceptionHandler、warningHandler 和 textHtmlHandler。没有 exceptionHandler 处理函数就会去应用 errorHandler 函数,并且如果在 callback 函数中的 js 出错也会跑到 errorHandler 去执行的。
再,还能在 dwr.xml 中配置有关异常的 convert,如:<convert match="java.lang.Exception" converter="exception"/>,通过 errorHandler 的 errorString、exception 获取更详细的信息。
相关文章推荐
- 关于运行web程序的几点错误处理方法
- SVN各种错误提示产生原因及处理方法
- 【C#】对异步请求处理程序IHttpAsyncHandler的理解和分享一个易用性封装 【手记】走近科学之为什么明明实现了IEnumerable<T>的类型却不能调用LINQ扩展方法 【手记】手机网页弹出层后屏蔽底层的滑动响应 【手记】ASP.NET提示“未能创建类型”处理 【Web】一个非常简单的移动web消息框 【手记】解决EXCEL跑SQL遇“查询无法运行或数据库表无法打开...”
- SVN各种错误提示产生原因及处理方法大全
- SVN各种错误提示产生原因及处理方法大全(转)
- SVN各种错误提示产生原因及处理方法
- SVN各种错误提示产生原因及处理方法
- SVN各种错误提示产生原因及处理方法大全
- linux下write操作原理、错误原因及处理方法
- asp.net 发布到IIS中出现”处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”“错误的解决方法
- WEB项目中图解no session问题产生的原因和解决方法
- Linux环境下段错误的产生原因及调试方法小结
- Linux环境下段错误的产生原因及调试方法小结
- 开发自己的Web服务处理程序(以支持Ajax框架异步调用Web服务方法)
- Linux环境下段错误的产生原因及调试方法小结
- 错误 78 “Web.NewsDetail”不包含“Label1”的定义,并且找不到可接受类型为“Web.NewsDetail”的第一个参数的扩展方法“Label1”(是否缺少 using 指令或程序
- NDK程序在虚拟机上运行出现signal 4 (SIGILL), fault addr 错误的原因及解决方法
- Linux环境下段错误的产生原因及调试方法小结
- Linux环境下段错误的产生原因及调试方法小结
- Linux环境下段错误的产生原因及调试方法小结