gpt4 book ai didi

java - 跨职能管理交易

转载 作者:行者123 更新时间:2023-11-30 04:42:32 25 4
gpt4 key购买 nike

我们有一个 java 应用程序,在此之前所有操作都是在多线程应用程序的 run 函数中完成的。现在我们正在将一些代码移至单独的函数中。我们必须将一些变量设置为全局变量,包括连接,以便可以在函数中使用它。下面是函数的运行和调用的框架。现在的问题是那些在 if 语句中处理的查询,它们遇到问题,然后整个事情进入捕获和回滚。现在的问题是,那些在 processOne 函数中调用的函数,如果它们遇到任何 catch,则在 if else 执行之后运行的一般查询也会被执行。有什么方法可以阻止它或将其与 processOne 错误联系起来吗?我们的想法是使用全局变量,因为尝试了其中的 dbConn.rollback 也确实有效。

public void run() {
try{
if(){
//process here
}
else{
// call function processOne
}
//some other general queries
dbconn.commit();
}

catch (SQLException ex){

try{
dbconn.rollback();
}
catch (Exception rollback){

}
}
}

void processOne(){
try{
//process queries here
catch (SQLException ex){
try{
dbconn.rollback();
}
catch (Exception rollback){

}
}
}

最佳答案

您需要做的就是从 processOne 函数抛出异常,然后在“run”函数中捕获它并回滚事务:

public void run() {
try{
if(){
//process here
}
else{
// call function processOne
}
//some other general queries
dbconn.commit();
}

catch (SQLException ex){

try{
dbconn.rollback();
}
catch (Exception rollback){

}
}

catch (Exception ex){

try{
dbconn.rollback();
}
catch (Exception rollback){

}
}
}

void processOne() throws Exception{

//process queries here

}
}

这样整个过程就会回滚。

关于java - 跨职能管理交易,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11920994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com