关于异常和日志的处理

关于异常和日志的处理

问题描述:

各位好,我有两个方面的疑问。
一.异常处理。
假设我有web层--->service层--->dao层。
如果我在dao层出现了异常,比如DataAccessException。我该如何处理呢?
我试了一下,觉得有以下几种方案:

1.最简单的是在web层捕获DataAccessException然后处理。

2.在dao层捕获,但不处理,像service层抛,知道抛到web层处理。
但是这样做,每一层都会有
try catch 语句,感觉很麻烦。

3.同2类似,但是使用spring的annouation注释,相对减少try catch
我想请问那种方法好点?

还有我觉得可以自己定义一个GeneralException继承自RuntimeException。
每次补货异常,但是抛出这个GeneralException这个异常,然后统一处理。

二.日志的处理

我的解决方法有以下几点:

1.将需要记入日志的类里面写上诸如:
Logger=LogFactory.getLogger();
logger.Info()之类的语句?
但是这样会做很多类都会有相同的日志语句。

2.利用spring aop 实现。
会不会有性能问题?

3.在自定义异常的那个GeneralException类里加上日志功能。
每次处理异常的时候同时处理日志。

请问那种方法好,或者有什么更好的方法?

                                 谢谢回答。

如果dao层出现异常,建议还是throw到service层吧,否则怎么处理事务问题那?当然dao层能恢复的就直接在dao层恢复了。
日志的话,不一定是抛例外了才记录日志吧,有的是调试用的,否则部署了以后,很难调试,建议外部的一些接口上面(比如webservice)还是要有日志,便于确定缺陷是出在service这里还是客户端上面。

至于异常处理
[quote]每一层都会有
try catch 语句,感觉很麻烦。 [/quote]
你并不需要写try,你直接在方法后面throws就可以了呀,不一定要捕捉到了才抛出去,你只要有就异常就让他出去就是了.

至于日志.
也并不是所有的方法都要有日志,而且一般的日志星系都是保存到数据库或者本地文件.
这个使用就比较灵活了.看需求而定.我们一般是采用log4j.所以日志信息都保存到本地文件.有问题就查勘文件就是了.这样性能高!如果保存到数据库,还要数据库开销