【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 思否

猜你喜欢

转载自www.cnblogs.com/junneyang/p/9091015.html