Code Patterns: 打破只做一次的循环

Code Patterns: Breaking from a do-once loop

考虑以下设计模式:

do {
    // Some logic here
    if (AnErrorOccurs()) {
        break;
    }
    // Some more logic here
    if (ADifferentErrorOccurs()) {
        break;
    }

    // Code completed successfully
    return someValue;
} while (false);

// Lengthy error-handling code here
return errorCode;

这样使用循环合适吗?我只是想要 break 语句的功能,这样我就可以将错误处理代码放在一个地方。一个单独的方法也可以工作,没错,但是假设范围内有大量变量作为参数传递会很笨重或不安全。

或者 try-finally 模式是处理这种情况的更好方法吗?或者抛出一大堆自定义异常?我只是想看看其他人如何处理它以获得最简洁和最可维护的代码。

如果你想处理异常,我认为你应该使用 try catch 语句而不是 do while,因为代码应该能够自我记录,而不需要在这里和那里添加注释。如果你想在你的代码中处理异常, try catch 语句不是更合适吗?话虽如此,我认为最好在 try catch 中使用自定义异常来处理您的特定异常。

在需要任何特定条件的方法中将抛出异常。例如,Convert.toInt32(string s) here。当条件不满足时,此 Convert.toInt32(string s) 将抛出 FormatExceptionOverflowException。 该方法中没有 try catchtry catch 将放置在调用 Convert.toInt32(string s).

的方法中