针对多个操作的Java try-catch处理

针对多个操作的Java try-catch处理,java,try-catch,Java,Try Catch,我有一个块,它在其他几个类中执行多个方法调用,比如操作 它是这样建造的 私有字符串XYZ(args1、ags2..) 操作2、3和4可能引发系统异常,但我需要确保3已实现,即使2失败,4已实现 即使3失败了 代码可以这样写吗,。。我的意思是它是理想的/好的编程吗 try { some preprocessing (can throw exception) try{ Opertaion 2 } catch (...) {}

我有一个块,它在其他几个类中执行多个方法调用,比如操作 它是这样建造的

私有字符串XYZ(args1、ags2..)

操作2、3和4可能引发系统异常,但我需要确保3已实现,即使2失败,4已实现 即使3失败了

代码可以这样写吗,。。我的意思是它是理想的/好的编程吗

try { 

     some preprocessing (can throw exception)

     try{

        Opertaion 2 

         } catch (...) {}  

     try {

        Operation 3

         } catch (...){}

     try {

         Operation 4

         } catch (...){}

     } catch (exception e){}

捕获异常(如在外部块中)被认为是不好的做法-它的粒度太粗。否则,我认为这很好-在Java中没有更好的方法来实现它-除非这个方法做得太多了?

为了确保所有步骤都有机会执行,您可以这样做

try {
   do1();
}
finally {
    try {
        do2();
    }
    finally {
        try {
            do3();
        }
        finally {
            do4();
        }
    }
}

你做你必须做的事。在某些情况下,只设置“进度”标志就足够了,这样您就可以知道自己已经走了多远。在其他情况下,您需要单独的try/catch范围。如果您需要在上述场景中始终执行4,则需要一个在此之前结束的范围,以便在出现1-3个错误时进行控制。请注意,并非每个范围都需要一个
捕捉
。如果你能用
finally
子句做你需要做的事情,那么就没有必要有一个
catch
,它除了退出例外之外什么都不做。如果否决票有一个解释,对读者和我都有好处。
try {
   do1();
}
finally {
    try {
        do2();
    }
    finally {
        try {
            do3();
        }
        finally {
            do4();
        }
    }
}