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