今天在弄dwr的异常处理,想把java后台的异常信息,在浏览器展示出来,原来没处理这块,导致dwr一直报Error错误,也不知道是什么错,需要后台翻日志,现在改造了一下,终于把异常的堆栈信息加载到前台了。
Dwr在异常处理的时候,有很多种方式,全局的方式,部分函数的方式,具体的写法Dwr的官方网站上有说(http://directwebremoting.org/dwr/documentation/browser/errors.html),这里就不介绍了。
我这里用的是全局的方法,机配置一个全局的异常处理函数。如果java后台不做处理的话,那么Dwr的全局函数,只能显示你在Exception里写的消息,不在Exception里的消息,是无法显示出来的,这就对我们排错造成困难。
因此我对后台的异常信息作了处理,让java抛出的异常信息都记录下来
代码如下(客户端):
function errorHander(msg,ex){
if(QH_LOADMASK){
QH_LOADMASK.hide();
}
var errorMsg = "系统堆栈:\n"+msg;
var stackMsg = "";
var programMsg = '程序堆栈:\n--------------------------------------------------------------------\n';
var continueCount = 0;
for(var j=0; j<ex.stackTrace.length; j++){
var obj = ex.stackTrace[j];
stackMsg += " at "+ obj.className+"."+obj.methodName+"("+obj.fileName+" "+obj.lineNumber+")\n";
}
if(stackMsg != ""){
Ext.Msg.show({
title:'错误堆栈',
//msg:"",
//defaultTextHeight:500,
width :900,
icon:Ext.Msg.ERROR,
buttons:Ext.Msg.OK,
prompt:true,
multiline:450,
value:errorMsg+"\n"+programMsg +stackMsg,
maxWidth:900
});
}
}
//配置DWR异常处理的全局处理函数
DWREngine.setErrorHandler(errorHander);
服务端:
public int saveOrUpdateRecords(List records) throws DAOException {
try {
return (Integer)super.getHibernateTemplate().execute(new BatchSoUCallback(records));
} catch (DataAccessException ex) {
String msg = ExceptionStackTracePaser.paserStactTrace(ex);
throw new DAOException("DataAccessException:" + msg);
}
}
public class ExceptionStackTracePaser {
/**
* 描述:解析异常信息的堆栈信息,并将其转换为字符串
* @param ex
* @return
* 返回值:String
*/
public static final String paserStactTrace(Exception ex){
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
PrintStream stream = new PrintStream(outputStream);
ex.printStackTrace(stream);
return ex.getMessage()+"\r\n"+outputStream.toString();
}
}
这样在前台就可以抓住其他部分的异常信息了。
注:ByteArrayOutputStream 用的是apache commons 的io包里面的类
分享到:
相关推荐
NULL 博文链接:https://chenming100-1976.iteye.com/blog/809288
- DWR提供了错误处理机制,可以通过JavaScript的异常处理结构来捕获调用Java方法时可能出现的错误。 总之,DWR提供了一种强大的机制,使Web应用能够轻松地实现前后端交互,增强了用户体验,特别是在实时数据更新和...
7. **错误处理**:在调用服务端方法时,应考虑异常处理。当服务端抛出异常时,DWR会提供一个回调函数来处理错误,我们需要确保有适当的错误提示和恢复机制。 8. **性能优化**:大量数据返回时,可能需要分页或延迟...
2. **JavaScript与Java的桥接**:DWR通过动态生成JavaScript库来映射Java对象和方法,使得JavaScript可以直接调用Java方法,同时处理类型转换和异常处理。 3. **安全机制**:DWR提供了一套安全机制,包括基于IP地址...
资源名称:适合初学者的DWR基本使用视频教程资源目录:【】dwr01_dwr的安装【】dwr02_dwr的转换器和异常处理【】dwr03_dwr的util的介绍【】dwr04_文件上传和与spring进行整合【】dwr05_dwr的debug和获取ServletAPI...
这使得在JavaScript中可以方便地进行异常处理。 8. **异步和同步调用**: DWR提供了异步和同步两种调用方式。异步调用不会阻塞浏览器,而同步调用会等待服务器响应完成后再继续执行后续代码。 9. **Caching**: ...
7. **错误处理**:当服务器端或客户端出现错误时,DWR提供了一套处理机制,包括异常的捕获和返回给前端。 8. **DWR与Ajax**:DWR是如何简化AJAX开发的,如何利用DWR实现异步数据更新,以及与传统AJAX请求的区别。 ...
**8.2 错误和异常处理**:DWR提供了强大的错误和异常处理机制,帮助开发者更好地管理异常情况。 1. **错误处理**:通过回调函数中的errorHandler属性来处理可能出现的错误。 2. **异常**:了解DWR可能抛出的各种...
6. **异常处理**: 当服务器端发生错误时,DWR可以将异常信息转换为JavaScript错误对象,使得客户端能够捕获并处理这些异常。这对于提供良好的用户体验至关重要。 综上所述,"DWRSpring实例"是一个很好的学习资源...
7. **错误处理**:学习DWR提供的错误处理机制,如何捕获并处理客户端和服务器端的异常。 8. **集成与调试**:理解如何将DWR与其他前端框架(如jQuery或AngularJS)集成,并使用DWR的内置调试工具进行问题排查。 9....
7. **异常处理**: DWR能够处理服务器端抛出的异常,并将其转换为客户端可读的错误信息。 8. **对象映射**: DWR可以自动将Java对象转换为JavaScript对象,反之亦然,简化了数据交换的处理。 9. **自定义序列化与反...
5. **错误处理**:DWR提供了丰富的错误处理机制,包括客户端和服务器端的异常处理,以及错误信息的传递和显示。 6. **缓存策略**:DWR 2.0支持缓存策略,可以缓存远程调用的结果,提高性能,减少服务器压力。 7. *...
DWR提供了错误回调机制,当Java方法抛出异常或通信失败时,可以捕获并处理这些错误。 8. **性能优化**:DWR支持缓存、批量调用和压缩等优化技术,以提高Web应用的性能。例如,可以设置缓存策略以减少不必要的网络...
6. **错误处理**:DWR提供了友好的错误处理机制,可以在客户端捕获并显示服务器端的异常信息。 在使用DWR时,开发者首先需要在服务器端创建可远程访问的Java类和方法,然后在客户端使用DWR生成的JavaScript接口与...
DWR提供了异常处理机制,可以在JavaScript中捕获服务器端抛出的异常。同时,要确保DWR的安全配置,防止跨站脚本攻击(XSS)和跨站请求伪造(CSRF)。 这个"Extjs+Dwr"的压缩包示例可能包含了相关的HTML、JavaScript...
3. **错误处理**:DWR提供了错误处理机制,可以在客户端捕获和处理服务器端的异常。 4. **集成其他技术**:DWR可与Spring、Struts等框架无缝集成,提升开发效率。 通过【DWR视频教程3】,你将系统学习到如何配置...
8. **异常处理**:DWR2.0的异常信息可以通过Spring的统一异常处理机制进行捕获和处理,提供更友好的错误提示,提高用户体验。 整合DWR2.0和Spring2.0的过程通常包括以下几个步骤: 1. 添加DWR和Spring的依赖库到...
最后,关于错误处理,DWR提供了回调函数,如上面JavaScript代码所示的`onUploadSuccess`和`onUploadError`。这些函数可以在客户端捕获服务器返回的任何异常信息,为用户提供适当的反馈。 总结起来,使用DWR进行文件...
6. **错误处理**:DWR提供了丰富的错误处理机制,可以捕获并显示服务器端抛出的异常,为调试和问题定位提供帮助。 7. **缓存**:DWR支持缓存策略,可以缓存服务器返回的结果,减少不必要的服务器负载。 8. **可...