欢迎来到天天文库
浏览记录
ID:38171643
大小:19.78 KB
页数:5页
时间:2019-06-07
《SSH异常和日志处理方案》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1异常和日志的作用1.1.异常的作用Java异常机制是为了对程序中可能出现的已知错误进行捕获,并进行相应处理。从是否反馈 给用户来看,存在两类异常:系统异常:这类异常由系统本身的低级异常引起,例如数据库连接失败、内存溢出、空指针 异常等等,这类异常不需要出现在前台,因为用户看不懂也没有必要看到这些异常信息。这 类异常需要在日志中进行完整记录以供日后开发人员进行查看分析。应用异常:即自定义异常,这类异常需要通过前台反馈给用户,友好提示用户当前操作异常 。应用异常通过系统异常转换而来,例如新建用户时,发生“主键冲突异常”,则需要在 UserinfoDao
2、中将“主键冲突异常”捕获,并转换为应用异常,异常提示信息设为“该用户 名XXX已存在,请使用其它用户名”,并将该异常信息反馈给前台。只要系统异常影响到的 用户的当前操作,就必须给用户提示信息,比如“系统后台发生错误,请稍后再试”等。应 用异常应按照提示方式的异常进行分类,对应不同的提示页面。1.2.日志的作用系统运行日志:记录系统的运行情况,跟踪代码运行时轨迹;异常和错误日志:记录异常堆栈信息,以供开发人员查看分析;业务日志:记录业务信息和用户操作,例如用户登录、删除数据、更新数据等。2.异常的处理原则1、避免过大的try块,不要把不会出现异常的代码
3、放到try块里面,尽量保持一个try块对应 一个或多个异常。2、细化异常的类型,不要不管什么类型的异常都写成Excetpion。catch语句表示我们预期 会出现某种异常,而且希望能够处理该异常。异常类的作用就是告诉Java编译器我们想要处 理的是哪一种异常,然后针对具体的异常类进行不同的处理。例如在DAO层中我们应该只捕 获SQLException或DataAccessException(Spring自定义的数据访问异常类)这些数据库异常 类,其他的异常NullPointException、NumberFormatException等应通过检测代码
4、增加其健 壮性来解决,而不应该通过try..catch(Exceptione)…语句捕获所有的异常。3、不要把自己能处理的异常抛给别人,不要忽略捕获的异常,捕获到后要么处理,要么转 译,要么重新抛出新类型的异常。。处理方式包括:Ø处理异常。针对该异常采取一些行动,例如修正问题、提醒某个人或进行其他一些处理 ,要根据具体的情形确定应该采取的动作。再次说明,调用printStackTrace算不上已经“ 处理好了异常”。Ø重新抛出异常。处理异常的代码在分析异常之后,认为自己不能处理它,重新抛出异常 也不失为一种选择。Ø把该异常转换成另一种异常。大多数情况
5、下,这是指把一个低级的异常转换成应用级的 异常(其含义更容易被用户了解的异常)。4、如果对catch块尽量保持一个块捕获一类异常,在catch语句中尽可能指定具体的异常类 型,必要时使用多个catch。例:try{}catch(Exceptione){e.printStackTrace();log.error("UserinfoDaoexecute()failed");}这段代码捕获了异常,但实际上对异常并没有进行处理,可以算得上Java编程中的杀手。按 照这个方式,在DAO层发生异常被忽略,Service层就认为DAO层运行正确,就不会回滚,事 务
6、控制就没有任何作用!!!ØprintStackTrace对调试程序有帮助,但程序调试阶段结束之后,printStackTrace就不 应再在异常处理模块中担负主要责任。Ø日志尽量在系统中的各个出口,例如Action、调度方法等处统一记录,可减少工作量, 况且日志"UserinfoDaoexecute()failed”并没有说明异常的详细信息,没有必要向日志 输出这句话。Ø即使catch中加入thrownewRuntimeException(e);语句。如果捕获的异常是 RuntimeException,更没有必要将异常再次转化为RuntimeExce
7、ption,这样不仅异常的本身 的类型丢失,重新定义异常也造成一定消耗。所以该处的处理原则应是:如果该处异常需要能转化为业务异常反馈给用户,则需要捕捉低 级异常并转换成业务异常上抛,否则不做任佧行过过程中产生 com.yixun.police.exception.BasicException异常,则会自动转到basicerror页面,从而 给用户相应的提示。basicerror页面<%@pagelanguage="java"contentType="text/xml;charset=UTF-8" pageEncoding="UTF-8"%>${exc
8、eption.message}4.自定义应用异常异常名称说明com.yixun.police.excepti
此文档下载收益归作者所有