DWR中的异常处理

 

1       问题的提出

     在项目开发阶段,开发人员需要得到完整的异常错误信息方便分析BUG, BUG异常的准确定位,减少查找BUG产生原因的时间,提高生产效率。而在项目发布阶段,用户希望看到的是比较友好的错误信息。因此对代码中的异常封装管理非常有必要,一般我们在使用DWR做AJAX开发很少对异常进行封装管理,要么直接抛出一堆异常信息给用户界面,要不在程序代码中进行硬编码封装。异常报告信息没有统一管理。报告给用户的错误消息,都是程序员在开发中自己编写的,对用户而言,常常不是有效的友好的提示信息。

       另外每个人都按自己的方式处理异常,且各层对异常处理的方式不同,导致不同的人,不同的层编写不同的代码,造成代码使用麻烦以及复用性低,若需修改,可能改动较大。

2       基本概念

     Java明确区分两种类型的异常: CheckedUnchecked.
checked exceptions,
编译器要求这些异常必须被捕获或者重新抛出.扩展了java.lang.Exception
unchecked exceptions,
不是必须捕获的,扩展了java.lang.RuntimeException的异常

3       解决思路

1.       规范代码中的异常,建立统一的异常抛出接口。

2.       WEB层处理异常信息,建立统一的异常显示页面,统一管理和维护开发人员定义的异常,建立异常唯一标识(ErrorCode),通过唯一标识可以关联知识库得到处理建议和解决方案。

 

4       处理原则

1.       一般不要在DAO层,Business层,Service捕获异常,对于那些需要处理checked Exception的代码,可以利用一个ExceptionAdapter的类把checked Exception包装成一个RuntimeException抛出

2.       Facade层次上处理unchecked异常,统一有ExceptionHander处理异常信息并记录日志后,再上抛给DWR,由dwr来显示这些异常。

3.       尽量少用checked异常。

5      解决方案

1          后台异常的处理

1.       Façade层处理:

public class custMgr{

   public void saveCustomInfo(CustonInfo,custInfo){

            try{

         //业务处理代码

}catch(Excpetion e){

         ExceptionHander. handleException(“E001”,”3”,e);

}

}

}

2.       Service层,Business层,DAO层的处理

public class custMgr{

   public void saveCustomInfo(CustonInfo,custInfo){

            try{

         //业务处理代码

}catch(SQLException e){

         throw new ExceptionAdapter("E001",ex);

}

}

}

 

2          前台WEB异常的处理

1.在页面中加入以下js片段

function errorHandler(msg,exception){

window.showModalDialog('<%=request.getContextPath()%>/error.jsp',

                                                {messge:msg,exceptionInfo:exception},

                    'help:no;resizable:no;dialogWidth:600px;dialogHeight:400px');

                  }

DWREngine.setErrorHandler(errorHandler); //设置异常处理方法

1.    DWR配置文件中,加入一下内容

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

<convert converter="bean"

match="com.timesontransfar.common.exception.ExceptionAdapter" />

<convert match="java.lang.StackTraceElement" converter="bean"/>

3          数据模型

异常定义表PUB_EXCEPTION

字段名称

字段解释

字段长度

备注

ErrorCode

异常唯一标志

NUMBER(9)

关联知识库,可以查出出现该异常是的处理建议及解决方案

EXCEP_NAME

异常名称

VARCHAR2(64)

自定义的异常名称

EXCEP_MSG

 

VARCHAR2(512)

异常友好的错误描述

EXCEP_TYPE       

异常类型

VARCHAR2(4)

 

EXCEP

操作建议

VARCHAR2(512)

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
软件说明: <br/> 第1章. DWR入门 8<br/>1.1 简介 8<br/>1.2 第一个DWR程序:Hello World 9<br/>1.2.1 将DWR放入你的工程 9<br/>1.2.2 编辑配置文件 9<br/>1.2.3 编写service 10<br/>1.2.4 测试DWR 10<br/>1.2.5 编写一个jsp 11<br/>1.3 本章总结 12<br/><br/>第2章. web.xml配置 13<br/>2.1 主要配置 13<br/>2.2 常用<init-param>参数列表 14<br/>2.2.1 安全参数 14<br/>2.2.2 Ajax服务器加载时保护参数 14<br/>2.2.3 其他参数 15<br/>2.3 日志配置 16<br/>2.4 多个dwr.xml配置和J2EE角色定义 16<br/>2.5 插件配置 18<br/>2.6 测试模式配置 19<br/><br/>第3章. dwr.xml配置 20<br/>3.1 纵览 20<br/>3.2 <init>标签 20<br/>3.3 <allow>标签 21<br/>3.3.1 Creator 21<br/>3.3.2 Converter 25<br/>3.4 <signatures>标签 30<br/><br/>第4章. 整合 32<br/>4.1 DWR与Servlet 32<br/>4.1.1 使用webContext的方法: 32<br/>4.1.2 方法选择 32<br/>4.2 DWR与Spring 34<br/>4.2.1 让DWR和Spring一起工作的检查列表 34<br/>4.2.2 Spring Creator 34<br/>4.2.3 找到Spring配置文件 34<br/>4.2.4 使用Spring配置DWR 35<br/>4.3 DWR与JSF 36<br/>4.3.1 JSF Creator 36<br/>4.3.2 Servlet Filter 36<br/>4.4 DWR与Struts 37<br/>4.4.1 Struts creator 37<br/>4.4.2 开始顺序 37<br/>4.5 DWR与Weblogic或PageFlow 38<br/>4.6 DWR与Hibernate 39<br/>4.6.1 让DWR和Hibernate一起工作的检查列表 39<br/>4.6.2 HibernateBeanConverter 39<br/>4.6.3 Session管理 39<br/>4.7 DWR与WebWork 40<br/>4.7.1 配置dwr.xml 40<br/>4.7.2 在JSP导入脚本 40<br/>4.7.3 高级 41<br/>4.8 DWR与Acegi 42<br/>4.8.1 问题提出 42<br/>4.8.2 解决方案 42<br/><br/>第5章. DWR的JavaScript简介 44<br/>5.1 简单的回调函数 44<br/>5.2 调用元数据对象 45<br/>5.3 查找回调函数 45<br/>5.4 创造一个与Java对象匹配的Javascript对象 46<br/><br/>第6章. engine.js 功能 47<br/>6.1 使用选项 47<br/>6.2 选项索引 48<br/>6.2.1 处理器(Handler) 48<br/>6.2.2 调用处理器(Call Handler) 48<br/>6.2.3 Hooks (一个batch可以注册多个hook) 49<br/>6.2.4 全局选项(在单次调用或者批量调用不可用) 49<br/>6.2.5 废弃的选项 49<br/>6.2.6 未来版本的选项 49<br/>6.3 选项说明 50<br/>6.3.1 批量调用 50<br/>6.3.2 顺序调用 50<br/>6.3.3 错误警告和超时 50<br/>6.3.4 远程调 Hooks 51<br/>6.3.5 远程调用选项 51<br/><br/>第7章. util.js 功能 54<br/>7.1 $() 54<br/>7.2 addOptions and removeAllOptions 54<br/>7.3 addRows and removeAllRows 55<br/>7.4 getText 56<br/>7.5 getValue 56<br/>7.6 getValues 57<br/>7.7 onReturn 57<br/>7.8 selectRange 57<br/>7.9 setValue 58<br/>7.10 setValues 58<br/>7.11 toDescriptiveString 58<br/>7.12 useLoadingMessage 58<br/>7.13 Submission box 61<br/><br/>第8章. DWR进阶 63<br/>8.1 DWR Annotations 63<br/>8.1.1 初始配置 63<br/>8.1.2 远程访问类 63<br/>8.1.3 对象转换 64<br/>8.2 错误和异常处理 64<br/>8.2.1 错误处理 64<br/>8.2.2 异常 65<br/>8.2.3 找出更多的信息 65<br/>8.3 传递额外的数据到callback函数 66<br/>8.4 从其他的URL读取数据 67<br/>8.5 安全 68<br/><br/>第9章. 范例精讲 71<br/>9.1 购物车 71<br/>9.1.1 介绍 71<br/>9.1.2 实现目录 72<br/>9.1.3 测试部署 74<br/>9.1.4 调用远程对象 75<br/>9.1.5 实现购物车 77<br/>9.1.6 调用远程的 Cart 方法 79<br/>9.1.7 演示结果 81<br/>9.1.8 总结 81<br/><br/>第10章. 附录 83<br/>10.1 常见问题 83<br/>10.1.1 TransformerFactoryConfigurationError 83<br/>10.1.2 XML解析错误 83<br/>10.1.3 使用weblogic的类路径问题 83<br/>10.1.4 没有cookies的情况下用DWR 84<br/>10.2 JavaScript高级应用 85<br/>10.2.1 用变量操纵函数 85<br/>10.2.2 高阶函数 86<br/>10.2.3 动态类型 87<br/>10.2.4 灵活的对象模型 89<br/>10.2.5 本节总结 91

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值