1、NC502客户化开发培训日志(异常)管理,用友软件股份有限公司NC客户化开发部 龚红军2009年 4 月 6 日初版 张时栋,目录,日志V5以前版本V5及以后版本异常异常对事务的影响前台异常捕获处理后台异常抛出/捕获处理常规处理方案(包括日志和异常)XxxUI。XxxDAO。,日志/V5以前版本缺点,混杂在一个文件.无法输出到指定的文件.无法控制输出的级别.DebugInfoWarnError参考Log4JApache Commons Logging,日志/V5日志处理优点,两个主要的APInc.vo.logging.Debug 前台输出nc.bs.logging.Logger 后台输出四个级
2、别的输出(针对Logger)Debug 输出普通的调试信息,主要用于开发环境的信息输出Info 输出提示性的信息,如程序运行所花费的时间等Warn 输出警告性的信息,如系统设置了一个需要打开的文件,但是系统在打开他的时候有问题,而用了一个缺省的文件,为此系统还是能够正常运行,但却不符合某些期望,采用警告Error 错误信息输出,表示系统出了错误,影响了系统的功能,如系统抛出了一个NullPointException,系统不能正常运行。统运行时默认输出级别为ERROR,异常,业务异常BusinessException 普通的业务异常.BusinessRuntimeException 普通的运行时
3、异常.如何设计异常体系结构尽量通过界面控制避免异常。尽量通过校验前置条件避免异常。前台处理一般不需要抛出异常。不能通过捕获不同的异常来实现程序的跳转。调用其他领域或模块前置/后置条件不满足,需捕获处理异常。条件不满足业务无法继续需要抛出异常。避免复杂的异常处理结构。不要多重继承或组合。,异常/前台异常捕获,提示:1、在前台一般不再显示抛出异常。2、捕获后一般只是输出到日志,有些需要显示异常信息。3、采用的方式一般是弹出对话框或者在信息栏输出。,异常/后台异常抛出,业务实现类业务代码中的业务异常无需捕获,其他异常需要捕获后转换成自己的XX BusinessException或XX Runtime
4、BusinessException由业务逻辑引发的异常必须为XX BusinessException或XX RuntimeBusinessException代码格式:要求在方法上只能签BusinessException public String queryTemplateId(TemplateParaVO paraVo)throws BusinessException/业务代码中,XxxUI异常捕获,try/业务处理调用服务接口 catch(BusinessException e)Logger.error(e.getMessage(),e);MessageDialog.showErrorDl
5、g(this,null,e.getMessage();catch(BusinessRuntimeException e)Logger.error(e.getMessage(),e);MessageDialog.showErrorDlg(this,null,e.getMessage();catch(Exception e)Logger.error(e.getMessage(),e);MessageDialog.showUnknownErrorDlg(this,e);,XxxDAO实现类,/不需处理的业务异常 try/数据库处理 catch(DbException e)Logger.error(e
6、.getMessage(),e);throw new XXBusinesseRuntimeException(e.Message();,/需要处理的业务异常 try/数据库处理 catch(DbException e)Logger.error(e.getMessage(),e);throw new XXBusinessException(业务提示信息);,常规处理方案,日志Client端采用Debug输出信息Server端采用Logger输出信息。包括异常信息。异常异常体系不要过于复杂。后台可抛出自己定义的异常,但方法的签名上尽量还是采用BusinessException。捕获异常后不能吃掉异常(什么都不做,也不输出日志)。异常对事务的影响非常大,需要关注和学习事务的处理。,
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1