1、华为信息门户 异常管理接口说明 文档历史 日期 描述 作者 2004-06-11 创建文档 余健 异常管理设计简介 系统中应对外协或集成的第三方成品做异常封装。整个系统统一定义由exception中继承的异常PortalException,依据对组件异常封装和自定义应用异常封装的原则,派生出以下异常: Ø XmlException xml操作异常 Ø DominoException Domino集成异常 Ø SapException Sap集成异常 Ø CMException CM操作异常 Ø DBException DB
2、操作异常 Ø AppException 自定义应用异常 u WorkFlowException 工作流管理异常 u PermissionException 权限管理异常 u ManageException 应用管理异常(含后台管理) u CommonException 其它应用异常 代码定义 依据异常结构的定义,对异常代码同样进行划分,各异常的代码范围如下: Ø XmlException PE00001-PE00100 Ø DominoException PE00101-PE00200 Ø SapException PE00201-PE00300 Ø C
3、MException PE00301-PE00400 Ø DBException PE00401-PE00500 Ø AppException PE01000-PE09000 u WorkFlowException PE01001-PE01100 u PermissionException PE01101-PE01200 u ManageException PE01201-PE01300 u CommonException PE01301-PE01400 集成应用说明 异常抛出处理结构如图: 说明: Ø 底层模块 如果底层模块具有自定义异常类如CMH
4、andler,NoteHandler,那么只允许抛出相关异常,也就是说CMHandler只能抛出CMException,NoteHandler只能抛出NotesException。 一、 如果底层模块捕获到系统异常,则必须将该系统异常作为内嵌异常抛出, 即 throw new CMException(异常代码,系统异常) 二、如果底层模块需主动抛出异常,则调用 throw new CMException(异常代码) 其它模块及工具类依次类推。 Ø 业务逻辑 必须遵循异常规化的原则,尤其是CommonException和ManagerException,如属于后台管理
5、异常一律抛出ManagerException,前台应用异常一律抛出CommonException。 一、 捕获异常尽量必免用异常父类Exception捕获,应分级捕获,如 try{ }Catch(CMException CME){ }Catch(CommonException CE){ }Catch(PortalException PE){ }Catch(Exception e){ } 具体捕获层次取决于应用需求。 二、如果捕获到底层模块异常,应将底层模块异常作为内嵌异常抛出,如 try{ }Catch(CMException CME){ throw n
6、ew CommonException(异常代码,CME) } 三、如果需主动抛出异常,应向上抛出,如 try{ if 不成功 throw new CommonException(异常代码) }Catch(CommonException CE){ throw new CommonException(CE); } Ø 控制层 接收业务逻辑异常,调用异常处理程序(该部份正在设计中) 接口使用概述 包名 mon.exception 类名 PortalException 功能说明 异常处理父类 接口名称 接口描述 Port
7、alException(String _strErrCode) 通过错误代码构造异常 PortalException(String _strErrCode, String[] _sParams) 通过错误代码,参数数组构造异常 PortalException(Throwable _cause) 通过系统异常构造异常 PortalException(String _strErrCode, Throwable _cause) 通过错误代码,系统异常构造异常 PortalException(PortalException _pe) 通过自定义异常构造异常 getMessage()
8、 获取错误信息(自身信息+内嵌信息) getErrCode() 获取异常代码 printStackTrace() 打印堆栈信息 接口名称 PortalException(String _strErrCode) 接口说明 通过错误代码构造异常 输入参数 String 错误代码 返回结果 无 接口名称 PortalException(String _strErrCode, String[] _sParams) 接口说明 通过错误代码,参数数组构造异常 输入参数 String 错误代码 String[] 参数数组(我们可能需要传递一些参数来个性化异
9、常信 息,做到异常信息的通用化,在异常信息配置文件中,用一些特 殊的标志来标识需要被参数化的地方,目前这种标识用[?]来做 如: “[?],您没有正常登录!” 在参数数组中传入用户ID 杨龙,最后构造出来的异常信息就是 “杨龙,您没有正常登录!” 返回结果 无 接口名称 PortalException(String _strErrCode, Throwable _cause) 接口说明 通过错误代码、系统异常构造异常 输入参数 String 错误代码 Throwable 系统异常 返回结果 无 接口名称 PortalException(PortalExce
10、ption _pe) 接口说明 通过自定义异常构造异常 输入参数 PortalException 自定义异常 返回结果 无 接口名称 PortalException(Throwable _cause) 接口说明 通过系统异常构造异常 输入参数 Throwable 系统异常 返回结果 无 接口名称 getMessage() 接口说明 获取错误信息(自身信息+内嵌信息) 输入参数 无 返回结果 String 错误信息 接口名称 getErrCode() 接口说明 获取异常代码 输入参数 无 返回结果 String 异常代码 接口名称 printStackTrace() 接口说明 打印堆栈信息 输入参数 无 返回结果 无






