日期:2014-05-18  浏览次数:20605 次

SSH框架的异常处理疑问。
在SSH开发中,采用申明式事务管理。

如果DAO抛出异常,需要往上抛出给SERVICE层吗?
如果要往上抛给SERVICE层,那么SERVICE层还需要往上抛到ACTION吗?



问这个问题是因为,比如添加数据,我不知道怎么判断数据是否添加成功。
DAO层的返回值是BOOLEAN,异常自己处理;SERVICE返回值也是BOOLEAN,异常也自己处理,这样让ACTION层知道???

还是

DAO层返回VOID,异常往上抛;SERVICE返回VOID,异常往上抛,ACTION在try里面根据是否有异常来知道添加是否成功???

请达人解惑……谢谢。

------解决方案--------------------
通常系统设计,异常主要是指下面这两种。

1. 业务异常,例如入力值搞错了,干了没有权限的事儿,比如说你要提交审批,但是越级提交了,之类的,这样的事情都是需要告诉客户的,让客户重新操作画面就可以,不需要管理员知道。

2. 系统异常,你的服务器Down了,网络断了,磁盘坏了,造成的异常,客户其实不需要知道错误信息,你只要显示 System error happend 就好,但是一定要在 log 里面留下足够的 Error 信息。以便让管理员来处理问题。

你说的就是第二种,你可以选择在控制层统一处理这样的异常(例如Error log输出,Error画面迁移),这样的做法貌似多一些。也可以选择在Dao层就将Error log保存下来,然后让控制层只要迁移画面就可以。

全看你自己的选择。
------解决方案--------------------
底层往上层抛:Dao层往service层抛,service层往action层抛。