【Web】Web开发中的异常处理方案

我认为最合理的做法:

1、dao层不捕获异常、不抛出异常:spring框架将底层的数据库checked异常封装成unchecked异常了

2、service层捕获异常,并抛出自定义unchecked异常,异常中不定义状态码:checked异常默认情况事务不会回滚

3、controller层捕获异常,并抛出自定义异常,异常类中定义需要返回的HTTP状态码:API文档一眼就可以明确所有的返回码

4、exceptionHandler中统一处理所有异常

 

但是,这样会造成controller比较臃肿,

所以,很多项目使用偷懒的办法,service中抛出的异常定义状态码,controller不捕获保持代码简洁,由exceptionHandler统一处理

 

这样同时也会有问题:

1、service中的状态码最好是HTTP的状态码

2、如果需要提供API文档,需要从service中搜集查看可能的返回码列表

 

参考资料:

java web service controller 异常_百度搜索

 Java应用后台开发设计之异常封装(一) - - ITeye博客

 java web项目整体异常处理机制 - 上善若水任方圆 - ITeye博客

 使用Spring MVC统一异常处理实战 - CSDN博客

 如何优雅的处理异常(java)? - 知乎

 Java-异常机制详解以及开发时异常设计的原则要求 - CSDN博客

 Java异常处理和设计 - 海 子 - 博客园

 java service 层 异常_百度搜索

 Java Web 项目(Spring 项目)异常处理问题 - V2EX

 Java在Service层异常封装-博客-云栖社区-阿里云

 java - 关于Service层异常封装的问题 - SegmentFault 思否

 关于Service层异常封装的问题 - 小茗同学的回答 - SegmentFault 思否

 java web项目整体异常处理机制 - 上善若水任方圆 - ITeye博客

 如何优雅的处理异常(java)? - 知乎

 web开发-java异常从业务层集中抛出,是不是每个控制层方法都要try catch——CSDN问答频道

 java - 到底应该在action里面捕捉异常还是在service里面捕捉异常? - SegmentFault 思否

 java - 请问业务层方法是抛出一个异常好还是返回一个结果更好 - SegmentFault 思否

 service层异常的处理 - - ITeye博客

 Java在Service层异常封装 - EasonJim - 博客园

 (5)java - 关于Service层异常封装的问题 - SegmentFault 思否

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值