【问题标题】:Code Patterns: Breaking from a do-once loop代码模式:打破一次性循环
【发布时间】:2017-07-12 03:33:51
【问题描述】:

考虑以下设计模式:

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 模式会是处理这种情况的更好方法吗?还是抛出一大堆自定义异常?我只是想看看其他人如何处理它,以便拥有最整洁和最可维护的代码。

【问题讨论】:

  • 你总是保证从AnErrorOccurs()返回一个布尔值吗?如果没有,那么try-catch
  • 这不是设计模式。并且 try-finally 也不是一种设计模式。
  • @Hosar 请解释一下。你会怎么称呼它?
  • @samAlvin do-while 是异常处理语句吗?我不关注。

标签: design-patterns pseudocode


【解决方案1】:

如果你想处理异常,我认为你应该使用try catch 语句而不是do while,因为代码应该能够自我记录而无需到处放置 cmets。如果您想在代码中处理异常,try catch 语句似乎更合适吗?话虽如此,我认为最好在 try catch 中使用自定义异常来处理您的特定异常。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-11
    • 2018-07-01
    • 2020-10-21
    • 2023-01-08
    • 1970-01-01
    • 2019-07-05
    • 2018-12-16
    相关资源
    最近更新 更多