當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
Spring AOP之异常转换
生活随笔
收集整理的這篇文章主要介紹了
Spring AOP之异常转换
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
Spring-AOP之異常轉換
引子
最近項目遇到了一個問題,就是說業(yè)務層向展現層需要轉換成統(tǒng)一個異常類,并拋出異常,但是由于業(yè)務層的異常類過多,所以導致業(yè)務異常轉換代碼充斥著異常轉換的代碼,本著程序猿能省寫代碼就省寫代碼的原則,決定用Spring AOP來做一個切片,業(yè)務異常類轉換.
最原始代碼
最原始的代碼,咱簡稱V1.0
@Overridepublic GnAreaVo selectByID(GnAreaCondition condition) throws CallerException {try {//業(yè)務處理if (StringUtils.isEmpty(condition.getAreaCode()))throw new BusinessException("10001", "區(qū)域編碼不能為空");Gson gson = new Gson();//處理結果return gson.fromJson(gson.toJson(iGnAreaBusinessService.selectByID(condition.getAreaCode())), GnAreaVo.class);} catch (BusinessException ex) {//throw new CallerException("100001", ex.getErrorMessage());} catch (SystemException ex) {//throw new CallerException("100001", ex.getMessage());} catch (Exception ex) {//throw new CallerException("10001", "系統(tǒng)異常");}}升級版本
升級版本,簡稱V1.1,提取出一個公共類來處理
@Overridepublic GnAreaVo selectByID(GnAreaCondition condition) throws CallerException {try {//業(yè)務處理if (StringUtils.isEmpty(condition.getAreaCode()))throw new BusinessException("10001", "區(qū)域編碼不能為空");Gson gson = new Gson();//處理結果return gson.fromJson(gson.toJson(iGnAreaBusinessService.selectByID(condition.getAreaCode())), GnAreaVo.class);} catch (BusinessException ex) {//throw DubboExceptAssembler.assemble(ex);} catch (SystemException ex) {//throw DubboExceptAssembler.assemble(ex);} catch (Exception ex) {//throw DubboExceptAssembler.assemble(ex);}}最終版
代碼更加簡單了,并且能支持更加多異常類的轉換,減少業(yè)務程序的無用代碼,下面來看看怎么實現的。
首先寫一個AOP
Spring的配置:
<bean id="dubboExceptionConvertor" class="DubboExceptionConvertInterceptor"/><aop:config><aop:aspect id="aspectLoggging" ref="dubboExceptionConvertor"><aop:pointcut id="dubboExceptionThrowing"expression="execution (* com.ai.runner.center.common.api.*.impl.*.*(..))"/><aop:after-throwing method="convertException" throwing="error"pointcut-ref="dubboExceptionThrowing"/></aop:aspect></aop:config>業(yè)務代碼:
@Overridepublic GnAreaVo selectByID(GnAreaCondition condition) throws CallerException {if (StringUtils.isEmpty(condition.getAreaCode()))throw new BusinessException("10001", "區(qū)域編碼不能為空");Gson gson = new Gson();return gson.fromJson(gson.toJson(iGnAreaBusinessService.selectByID(condition.getAreaCode())), GnAreaVo.class);}Done!
轉載于:https://www.cnblogs.com/yinxiangnan/p/4718543.html
總結
以上是生活随笔為你收集整理的Spring AOP之异常转换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自己写了个nginx启动脚本,shell
- 下一篇: 关于list.extend(iterab