<项目经验> controller, service ,dao 各执其责,异常处理

dao : 处理数据库交互,增删改查.

service: 负责业务模块的逻辑应用设计, 配置事务。

controller: 负责请求转发,接受页面过来的参数,传给service处理,接到返回值,再传给页面。

异常处理

1、dao层不捕获异常、不抛出异常:spring框架将底层的数据库checked异常封装成unchecked异常了
2、service层捕获异常,并抛出自定义unchecked异常,抛出的异常定义状态码:checked异常默认情况事务不会回滚 .  (如果不抛出异常事务不会回滚)
3、controller层捕获unchecked异常, 处理返回结果.
4、exceptionHandler中统一处理所有没有捕获异常

异常分类

https://blog.csdn.net/qq_14982047/article/details/50989761

  spring aop  异常捕获原理

默认情况下aop只捕获RuntimeException的异常,但可以通过配置来捕获特定的异常并回滚,

换句话说在service的方法中 不使用try catch   或者  在catch中最后加上throw new RuntimeException(), 这样程序异常时才能被aop捕获进而回滚


  解决方案: 

  • 方案1:  service中不做异常捕获, 程序500.
  • 方案2:  service中做异常捕获 ,  在catch中最后加上throw new RuntimeException()
  • 方案3:  service中做异常捕获, 在catch语句中增加:TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();语句,手动回滚,这样controller就无需去处理异常.

转载于:https://my.oschina.net/u/3970972/blog/3028316

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值