事务中的异常处理

问题描述

事务配置在service层中,service中方法s调用了dao层两个方法save和update,,/**假设事务已配置(service层中)**//***模拟service层的s方法*/publicvoids(){//保存成功,则updateif(save()){update();}}/***模拟dao层的save方法*@return*/publicbooleansave(){booleanflag=false;try{//hibernate的save方法flag=true;}catch(){flag=false;}finally{returnflag;}}/***模拟dao层的update方法*/

假设save的时候sql语句写错了在dao层save会不会报异常,我测试的时候dao层的save不会报异常,直接运行try里面的代码和finally里面的代码,然后继续执行service中s方法,执行快结束时出了异常,我觉得是事务在service层,提交事务时菜发sql语句,所以出异常,现在问题是这个异常是什么异常,我在dao层的save方法捕获异常有没有作用,(好像没有作用,不确定),当事务申明在service层时,dao层是不是就可以不考虑异常情况了,还是要考虑?亦或是通过throws抛出可能发生的异常,最后请大神讲讲事务处理sql异常的机制,申明试事务肯定是要通过反射处理的,我的想法:sql语句那行代码执行了,但是没有事务提交,不算真正的发sql语句,在dao层try-catch是没有作用的,需要向上抛出可能出现的异常,在service层也是向上抛出或是try-catch

解决方案

解决方案二:

解决方案三:
在service处理异常dao层可以考虑往上抛不需要处理2遍啦浪费性能

时间: 2024-12-02 22:26:21

事务中的异常处理的相关文章

SQL中存储过程中使用事务,并且加入异常处理机制.

--存储过程中使用事务,并且加入异常处理机制. -- ============================================= CREATE PROCEDURE [dbo].[UP_Orders_Import] AS BEGIN BEGIN TRAN --开启事务 BEGIN TRY SELECT 1/0 COMMIT TRAN --提交事务 END TRY BEGIN CATCH DECLARE @ErrorMessage NVARCHAR(4000) , @ErrorNum

浅析Lua编程中的异常处理

  这篇文章主要介绍了浅析Lua编程中的异常处理,是Lua入门学习中的基础知识,要的朋友可以参考下 需要进行错误处理 错误处理是必要的,因为真实世界中的操作通常需要使用复杂的操作,包括文件操作,数据库事务和web服务调用.没人关心错误的业务,涉及保密信息或金钱交易时造成大的损失. 在任何编程,总是有错误处理的要求.错误可以是两种类型,其中包括, 语法错误 运行时错误 语法错误 因使用不当造成的各种程序组件,如运算符和表达式中出现语法错误.一个简单的例子中的语法错误如下所示. 代码如下: a ==

Symbian学习总结-基础篇-Symbian C++中的异常处理

在现代高级语言中,大多数语言都有对应处理异常的关键字,如:C++中的try/catch,Delphi中的Try/Except/Finally,这些关键字都被编译器直接的支持. 但是,当Symbian OS C++被发明的时候,C++中的关键字try/catch/finally还没有被标准支持.而且照Symbian官方的话来说,C++的异常处理机制太笨重,不够轻量级,他们设计了一套效率更加高,更适合于小型的.内存受限的设备的异常处理机制. 一.回顾历史 在标准C++中,我们使用如下方法来处理异常:

JavaScript中的异常处理方法介绍

 这篇文章主要介绍了详解JavaScript中的异常处理方法,包括基本的try...catch语句和throw语句的使用,需要的朋友可以参考下     有三种类型的编程错误:(1)语法错误和(2)运行时错误(3)逻辑错误: 语法错误: 语法错误,也被称为解析错误,在编译时进行传统的编程语言,并出现在JavaScript解释时. 例如,下面一行将导致一个语法错误,因为它缺少一个右括号: ? 1 2 3 4 5 <script type="text/javascript"> &

JS中的异常处理方法分享

我们在编写js过程中,难免会遇到一些代码错误问题,需要找出来,有些时候怕因为js问题导致用户体验差,这里给出一些解决方法 js容错语句,就是js出错也不提示错误(防止浏览器右下角有个黄色的三角符号,要不用户体验不好)    代码如下: window.onerror=function(){return true;}        下面是为了获取js异常信息,方便开发者找回问题   1,try...catch...   代码如下: <script type="text/javascript&q

Python中的异常处理

  这篇文章主要介绍了解析Python中的异常处理,异常处理是学习每门编程语言都必须掌握的重要知识,本文代码基于Python2.x版本,需要的朋友可以参考下 在程序运行的过程中,如果发生了错误,可以事先约定返回一个错误代码,这样,就可以知道是否有错,以及出错的原因.在操作系统提供的调用中,返回错误码非常常见.比如打开文件的函数open(),成功时返回文件描述符(就是一个整数),出错时返回-1. 用错误码来表示是否出错十分不便,因为函数本身应该返回的正常结果和错误码混在一起,造成调用者必须用大量的

spring事务-spring如何在只读事务中提交数据

问题描述 spring如何在只读事务中提交数据 现在有个需求,我现在要去查询一个对象,如果这个对象不存在在,就初始创建一个,但这个查询是只读事务,没办法提交.有什么解决方案? 一种方法就是将这个查询方法加读写事务,这个不是我希望的,因为这个方法大部分时候都是查询的.大家有什么解决方案可以在只读事务中转换为读写事务? 解决方案 只读事务中创建不合适.是不是可以在只读事务中通过消息等方式发送给读写事务进行数据添加. 关键添加后的数据是否在只读事务中要使用.如果需要使用那就得吧只读事务改成读写事务了.

spring-在Hibernate声明式事务中,提交事务抛出异常

问题描述 在Hibernate声明式事务中,提交事务抛出异常 感谢在前 在使用Spring+Hibernate声明式事务中,需要插入大量数据,为了提高插入效率, 需要每隔固定条数提交一次错误,但是在提交事务之后,声明式事务自动提交时就 会抛出异常: Could not commit Hibernate transaction; nested exception is org.hibernate.Tra nsactionException: Transaction not successfully

T-SQL编程中的异常处理-异常捕获(try catch)与抛出异常(throw)

原文:T-SQL编程中的异常处理-异常捕获(try catch)与抛出异常(throw)   本文出处: http://www.cnblogs.com/wy123/p/6743515.html     T-SQL编程与应用程序一样,都有异常处理机制,比如异常的捕获与异常的抛出(try catch throw),本文简单介绍异常捕获与异常抛出在T-SQL编程中的实际使用 . 异常处理简单说明 异常捕获在应用程序编程中非常常见,提供了处理程序运行时出现的任何意外或异常情况的方法刚毕业的时候对于异常处