U9 捕获通用 CRUD 异常范例说明 版 本 号 :V1.0 作者:者文明 版本记录 【此部分要记录该文档形成过程中的历次版本变更过程及变更的内容】 版本 修改与参与人 修改时间 修改原因 修改概述 审批人1.0 者文明 2008/06/26 原始文档建立 一.问题域说明 应用场景:如果后台通用 CRUD 抛出的异常信息不能满足要求,可以自己进行封装之后再抛出。这种情况一般在通用 CRUD 抛出的异常在某些特定场景下无法给出准确提示时使用。 二.基本原理 在BE自动生成的Extend.cs文件中重新封装如下方法中的异常: public override void DealException(Exception e) { base.DealException(e); throw e; } 三.关键代码及说明 public override void DealException(Exception e) { if (e is RefObjectInValidException) { RefObjectInValidException re = (RefObjectInValidException)e; throw new MyExc(re.EntityFullName,re.AttrName,this.Values[re.AttrName]); } base.DealException(e); } 四.源代码使用说明 通用 CRUD 抛出的异常类型包括: AttrCannotNullException 属 性 不 能 为 空 , 涉 及 实 体 是${EntityFullName},实体属性名是${AttrName} AttributeInValidException 属 性 效 验 异 常 : 涉 及 实 体 是${EntityFullName},实体属性名是${AttrName}, 错误信息是 ${ErrMsg} BusinessException 实 体 ${EntityFullName} 异 常 , 错 误 信 息 是${ErrMsg} EntityNotExistException 实体 ${EntityFullName} 不存在 RefObjectInValidException 实 体 ${EntityFullName} 的 引 用 对 象${AttrName} 不存在或者无效 AttrNotNullableException &{AttrLabel} 不能为空,请录入 AuthorityException 权限异常:${ErrMsg} CascadeDeleteException &{RefEntityName} 已被使用,不能删除。 EntironmentException 环境异常::${ErrMsg} EntityBeenDeletedException &{EntitySourceID} ${ErrMsg} EntityBeenModifiedException &{EntitySourceID} ${ErrMsg} GenerateSqlException 生成 SQL 出现异常: ${ErrMsg} MetadataAccessException 元数据访问异常:${ErrMsg} MultiBuinessKeyException (多)业务主键异常: ${ErrMsg} PersistenceException ${ErrMsg} SqlParamsException 输入参数异常:${ErrMsg} SqlUniqueKeyException &{AttrLabel} 已存在,请重新录入 在具体场景下可以根据这些异常进行判断。 五.组装发布说明(可选)