我目前的逻辑是

try {
    Boolean succeeded = process(); /* May throw SpecificException */
    if (succeeded) { /* next step */ }
    else { /* clean up */ }
} catch (SpecificException e) {
   /* clean up */
}


清理部分是相同的。是否有避免重复代码的好方法?

最佳答案

如果该try-catch块是一个完整的方法(即在同一方法中该块之后没有其他逻辑应执行),则可以编写:

try {
    Boolean succeeded = process();
    if (succeeded) {
        /* next step */
        ...
        return;
    }
} catch (SpecificException e) {
    // don't throw an exception
}
/* clean up */

09-04 23:26