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