快速业务通道

DWR调用远程方法的错误和异常处理 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14

DWR调用远程方法的错误和异常处理

时间:2011-10-28

记得以前通常我们在调用 DWR 的远程方法是这样写

Remote.method(params,function(data){   
    //服务端执行后客户端的逻辑,如   
    alert("服务端执行后返回的数据:"+data);   
});  
Remote.method(params,function(data){
    //服务端执行后客户端的逻辑,如
    alert("服务端执行后返回的数据:"+data);
});

第一个至倒数第二个参数为客户端传向服务端的数据,最后一个参数直接就是一个回调函数。因为服务端根据 Java 对象生成的 js 代码就是:

Remote.method = function(p0, callback) {
    dwr.engine._execute(Remote._path, ''Remote'', ''method'', p0, callback);
}

所以很直观的把第二个参数理解为就是一个回调函数。当然要注意了,上面说的远程方法都是一个参数,如果为多个参数的话,callback 总是最后一个参数,如:

Remote.method= function(p0, p1, callback) {
  dwr.engine._execute(Remote._path, ''Remote'', ''method'', p0, p1, callback);
}

你的 DWR 程序要是一切顺利,那都好说,算你幸运;而要是碰到了远程方法在处理你的请求时抛出了异常,你将会看到 DWR 只会给你一个 alert("Error") 简单显示错了,而这是不够的。所以你需要去琢磨如何主动捕获种这一错误,更友好的展示给用户。所以若碰到远程调用的异常,你同样是幸运的,因为又可以思考来学到一着。

那个 alert("Error") 其实是 DWR 的全局错误处理,可通过 dwr.engine.setErrorHandler(errorHandler) 来改变它的默认行为的,如

function errh(errorString, exception) {
    alert("提示你自定义的全局出错信息。");
}

dwr.engine.setErrorHandler(errh);

DWR调用远程方法的错误和异常处理(2)

时间:2011-10-28

也许我们很少这么做,因为全局性的错误处理满足不了个性化的远程调用。我们可以把错误处理  errorHandler 写在远程调用的函数参数中。回头看前面那个 callback,当它是一个函数时,就是个成功调用后的处理函数,它也可以是个包含几个函数的对象,此时远程调用就要这么写:

Remote.method(params,{   
        callback:function(data){ //调用成功时的处理函数   
            //服务端执行后客户端的逻辑,如   
            alert("服务端执行后返回的数据:"+data);   
        },   
        errorHandler:function(errorString, exception) {//执行异常时   
            alert(''修改 XXX 时出错,请检查 XXX 云云:''+ errorString)   
        }   
    }   
);  
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 去执行的。详细的用法请见:http://directwebremoting.org/dwr/other/errors.html。

再,还能在 dwr.xml 中配置有关异常的 convert,如:

<convert match="java.lang.Exception" converter="exception"/>

这样你就能通过 errorHandler 的 errorString、exception 获取更详细的信息。有进一步的实际需求时再来深入。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号