`
xly_971223
  • 浏览: 1266761 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

DAOException 在业务层的处理方式

阅读更多
在dao层通常会抛出一个DaoException如下
class UserDao{
    public void insert(User user)throws DAOException{
        //dao code
    }
}

在业务层调用时应该怎样处理这个DAOException呢?
个人认为用两种方式 第一种方式: 不进行处理直接抛给web层  第二种方式 转换成某种业务异常
第一种的缺点是将底层的异常暴露给了客户端  优点是web层可以明确感知到dao层发生异常并告知浏览器用户
第二种正好跟第一种相反: 缺点是web层不知道发生了dao异常,catch到的是一个业务异常,优点是dao异常不会暴露给web层
现在就到底使用那种方式比较困惑
分享到:
评论
10 楼 银色幻想 2006-11-26  
这样的话dao层是不是不用写log了,直接在service层和web层记录
9 楼 抛出异常的爱 2006-11-24  
xly_971223 写道
抛出异常的爱 写道
在你们看来?
日志这东西是没用的....

如果是非预见异常直抛...
如果是可预见异常处理一下写个日志就行
而且DAO异常与Service异常共用?
.....强

请问 抛出异常的爱 是怎么处理的呢?


好别扭的....发问?

在Serviec层中所有能想到与必作的异常都捕捉

不能想到的用serviceException包装后抛出
8 楼 xly_971223 2006-11-24  
抛出异常的爱 写道
在你们看来?
日志这东西是没用的....

如果是非预见异常直抛...
如果是可预见异常处理一下写个日志就行
而且DAO异常与Service异常共用?
.....强

请问 抛出异常的爱 是怎么处理的呢?
7 楼 抛出异常的爱 2006-11-24  
在你们看来?
日志这东西是没用的....

如果是非预见异常直抛...
如果是可预见异常处理一下写个日志就行
而且DAO异常与Service异常共用?
.....强
6 楼 ddandyy 2006-11-24  
业务判断到插数据库还是有间隔的
理论上说  这个异常一定会出现的
5 楼 xly_971223 2006-11-24  
myreligion 写道
我们的做法是所有异常在web层处理,通过spring的那个exceptionHandler把异常分到不同的页面上,然后给出通用的提示信息,好比没有权限,密码错误,系统错误....。然后在页面的隐藏地方把堆栈信息打出来,方便沟通与调试的时候使用。

我也倾向于myreligion这种方式
现在的问题是 DAOException是直接传到web层还是转换成业务异常
4 楼 xly_971223 2006-11-24  
ddandyy 写道
只扔这个太大了一些吧

如果是主key重复之类的  应该是要报过去的

其他的比如连不上DB之类的   写ERROR_LOG文件就是了


在DAO层是这样处理的 :将所有的在访问数据中遇到的异常都转换为DAOException,被转换基本上都是一些不可预知的异常 如数据库连接错误  hibernateException等
实际上我个人认为这类异常即使抛出,基本我们也没有办法处理。 所以在有些应用种直接抛出RuntimeException
至于主键重复之类的 我觉得应该放在业务层去判断比较好 而不应该直接去插 等待重复时报告异常
3 楼 myreligion 2006-11-24  
我们的做法是所有异常在web层处理,通过spring的那个exceptionHandler把异常分到不同的页面上,然后给出通用的提示信息,好比没有权限,密码错误,系统错误....。然后在页面的隐藏地方把堆栈信息打出来,方便沟通与调试的时候使用。
2 楼 together 2006-11-24  
就某些应用而言,把详细的error暴露给web层也不见得是坏事。
用户那边可能没有专业的技术人员,你叫他去后台查log可能不太现实。让用户直接看到详细的错误信息,沟通起来也方便一些。当然我们的用户都比较弱的。

最我见过的一个弱智的报错方式,用户登录不成功,系统就报一个“您的用户名或密码不正确,无法登录”。而实际上有多种可能的,可能是数据库没连接上,可能是sql语句本身就是写错了,也可能用户不存在,也可能密码不对,也可能用户被禁用。但是你报这个错误出来给用户,就很难沟通解决问题。
1 楼 ddandyy 2006-11-24  
只扔这个太大了一些吧

如果是主key重复之类的  应该是要报过去的

其他的比如连不上DB之类的   写ERROR_LOG文件就是了

相关推荐

    UAP63-1RIA-单据开发

    UAP63-1RIA-单据开发 用友官方资料

    内部排序算法大总结Java版

    总结了所有的内部排序算法,包括插入排序,选择排序,交换排序,基数排序,归并排序等等

    NC65通过BaseDAO操作数据库

    NC65通过BaseDAO操作数据库,包含接口类及接口实现类: /** * 获取baseDAO * @return */ public BaseDAO getBaseDAO() { if(baseDAO == null){ baseDAO = new BaseDAO(); } return baseDAO;...

    前端-后端java的Util类的工具类

    │ │ ftp二进制与ascii传输方式区别.txt │ │ IPDeal.java │ │ Md5.java │ │ MD5Encrypt.java │ │ MyFileFilter.java │ │ PropsUtil.java │ │ RegExUtil.java │ │ SimpleConfig.java │ │ ...

    员工考勤系统.docx

    员工考勤系统.docx

    基于STM32的调试模块的外设和时钟电路分析

    基于STM32的调试模块的外设和时钟电路分析。回顾 CMSIS、LL、HAL 库

    基于 UDP 的分布式毫米波雷达python代码.zip

    1.版本:matlab2014/2019a/2021a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    pyzmq-25.1.1b2-cp36-cp36m-musllinux_1_1_x86_64.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    grpcio-1.7.0-cp35-cp35m-macosx_10_7_intel.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    免费的浏览器内JSON到 CSV 转换器

    在处理 JSON 数据时,尤其是为了便于分析和共享,常常需要将其转换为 CSV 格式。免费的浏览器内 JSON 到 CSV 转换器为用户提供了简便而高效的方法来完成这一任务,无需额外的软件安装。这些工具通常基于 JavaScript,直接在浏览器中运行,适合开发者、数据分析师及其他需要转换数据格式的用户。 ### **免费 JSON 到 CSV 转换器的概述** **功能介绍** 1. **无安装要求** - **浏览器运行**:无需下载或安装任何软件,用户只需通过浏览器访问相应的在线工具,即可进行 JSON 到 CSV 的转换。 - **跨平台支持**:兼容 Windows、macOS、Linux 等操作系统,以及各种浏览器(如 Chrome、Firefox、Edge)。 2. **用户界面** - **简洁直观**:通常提供一个简单的文本框用于输入或粘贴 JSON 数据,并带有一个按钮或选项来触发转换。 - **即时转换**:点击转换按钮后,立即生成 CSV 数据,并提供下载链接或直接显示转换结果,便于复制或导出。 3. **支持大部分 JSON

    miflash_unlock.zip

    miflash_unlock.zip

    模型转换-OpenVINO模型IR-XML转换为onnx模型-附项目源码+使用教程-优质项目实战.zip

    模型转换_OpenVINO模型IR-XML转换为onnx模型_附项目源码+使用教程_优质项目实战

    pyzmq-25.0.2-cp37-cp37m-musllinux_1_1_x86_64.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    测试1111111111111111

    测试1111111111111111

    Hume AI发掘AI新赛道 大模型为人类提供情绪价值

    OpenAI在推出GPT-4之后,大模型各方面的功能都再次升级,但是聊天功能方面人工智能的回复还是过于理性,不能满足人类想要的情绪价值。不过为人类提供情绪价值,让聊天回复更像真人这件事儿,有个大模型正在做。不久前,Hume AI 宣布推出首个基于大语言模型的语音对话式聊天助手EmpatHic Voice Interface(EVI),主打一个“有情商”。

    人脸识别matlab代码.zip

    1.版本:matlab2014/2019a/2021a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    18细石混凝土楼地面工程.doc

    18细石混凝土楼地面工程

    grpcio-1.22.1-cp35-cp35m-win_amd64.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    grpcio-1.7.3-cp35-cp35m-macosx_10_7_intel.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    cryptography-2.9.1-cp35-abi3-macosx_10_9_x86_64.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

Global site tag (gtag.js) - Google Analytics