我认为最合理的做法:

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

【Web】Web开发中的异常处理方案的更多相关文章

  1. web前端开发中常用的尺寸和位置

    我们在日常web前端开发过程中,会经常用到各种尺寸和位置.通常是js做动画的时候.轮播图,滚屏动画,粒子,碰撞检测,拖拽,滚动加载等等.这里我将常用的尺寸和位置的获取进行总结,不包括canvas,SV ...

  2. WEB前端开发中的图片压缩

    web前端开发中,图片的重要性不言而喻,而由于一些图片的大小加上现在国内的网速不给力等种种原因,我们非常有必要对网站使用的图片进行压缩,压缩图片必然会带来图片质量的损失,我们要尽可能的在质量降低很小的 ...

  3. Java Web应用开发中的一些概念

    最近在学习Java Web,发现Java Web的概念很多,而且各个概念之间的关系也挺复杂,本篇博客把这些关系总结于此,主要参考的博客附在文章末尾. 概念 服务器 服务器,硬件角度上说就是一台高性能的 ...

  4. Web前端开发中的MCRV模式(转)

    作者: izujian  来源: baiduux 摘要:针对前端开发中基于ajax的复杂页面开发所面临的代码规模大,难以组织和维护,代码复用性.扩展性和适应性差等问题,本文尝试以MVC思想为 基础,结 ...

  5. Web前端开发中的小错误

    Web前端开发中的小错误 错误1:表单的label标签跟表单字段没有关联 利用“for”属性允许用户单击label也可以选中表单中的内容.这可以扩大复选框和单选框的点击区域,非常实用. 错误2:log ...

  6. Web应用开发中的几个问题

    Introduction 由于Ajax技术在Gmail中的成功应用和高性能的V8引擎的推出使得编写Web应用变得流行 起来,使用前端技术也可以编写具有复杂交互的应用.相对于native应用,Web应用 ...

  7. px em rem在WEB前端开发中的区别

    我们都知道基于像素的字体大小所用的单位是px,但是随着响应式设计的不断火热,基于相对字体大小的单位em变开始流行起来.当然,rem也在Web前端开发人员讨论如何更好设置字体大小的讨论话题之列.是不是需 ...

  8. web前端开发中的浏览器兼容性总结

    1.居中问题 div里的内容,IE默认为居中,而FF默认为左对齐,可以尝试增加代码margin: 0 auto; 2.高度问题 两上下排列或嵌套的div,上面的div设置高度(height),如果di ...

  9. WEB前端开发中的SEO注意点

    近几年来,SEO在国内得到了蓬勃的发展,其中很多的SEO技术越来越体现在web前端的一些细节上.要做好SEO,WEB前端这一块也要做必不可少的优化. 这就要求我们WEB前端工程师在开发页面的时候,要写 ...

随机推荐

  1. 高性能之css

    避免使用@import 有两种方式加载样式文件,一种是link元素,另一种是CSS 2.1加入@import.而在外部的CSS文件中使用@import会使得页面在加载时增加额外的延迟.虽然规则允许在样 ...

  2. sql 将一列一逗号分隔拼成字符串

    select stuff((select ','+w.Waybillno from Web_Way_Waybill w where w.IsValid<>'Y' AND w.TruckOr ...

  3. 删除ELK中的数据。。

    直接使用这个命令就行了: curl -XDELETE "http://127.0.0.1:9200/logstash-2017.08.19" 2017.08.19可以动态生成,   ...

  4. JavaSE| 面向对象的三大特征

    1.面向对象的基本特征之一:封装Encapsulation 目的:隐藏实现细节,让使用者方便,让代码更安全 将对象的属性和行为封装起来,其载体就是类.类通常对客户隐藏其实现细节,这就是封装的思想. 封 ...

  5. The Monocycle(bfs)

    题目描述: 转载自:https://blog.csdn.net/h1021456873/article/details/54572767 题意: 给你一个转轮,有5种颜色,为了5中颜色的位置是确定的, ...

  6. JavaEE 之 Mybatis

    1.Mybatis a.定义:MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架 b.步骤: ①在src下创建 SqlMapConfig.xml 及 datasource.pr ...

  7. CLR Via 第一 章 知识点整理(1)

    写这个纯粹是自己的一点学习总结,其实就学习的笔记整理,相当于对自己的一点督促,如有看到不正确的欢迎指出 一般我们写代码都是使用的高级语言,但是在CLR中运行的代码并不是我们直接写的代码,而是通过我们选 ...

  8. react+typescript报错集锦<持续更新>

    typescript报错集锦 错误:Import sources within a group must be alphabetized.tslint(ordered-imports) 原因:impo ...

  9. Xamarin Essentials教程数据处理传输数据

    Xamarin Essentials教程数据处理传输数据 在移动应用程序中,除了常规的数据处理,还涉及数据存储.数据传输.版本数据多个方面.Xamarin.Essentials组件提供了多个数据处理相 ...

  10. POJ1742----Coins

    背包专题:http://www.cnblogs.com/qq188380780/p/6409474.html //多重背包 #include<cstdio> ],a[][]; int Ro ...