运营状态与例外

时间:2013-09-19 07:20:56

标签: php exception

我很好奇何时使用操作状态和异常时。假设我的课程TextProcessor包含方法getText()processText()sendText()。所有这些方法都对类的私有数据执行操作。我需要确保所有操作顺利进行。我有两个选项 - 每个方法都可以返回操作状态(0 - 成功,> 0错误代码)或在方法中抛出异常。似乎异常是控制方法执行的更方便的方法,因为在返回操作状态时我需要执行以下操作:

$result = textProcessor->getText();
if ( $result !== 0 ) {
    return $result;
}

$result = textProcessor->processText();
if ( $result !== 0 ) {
    return $result;
}

$result = textProcessor->sendText();
if ( $result !== 0 ) {
    return $result;
}

或者这样

if ( textProcessor->getText() !== 0 && textProcessor->processText() !== 0 && textProcessor->sendText() !== 0 ) {
    return processingErrors::textProcessorError;
}

除了例外情况,这一切似乎都更简单:

try {
    textProcessor->getText();
    textProcessor->processText();
    textProcessor->sendText();
} catch (textProcessorException $e) {
    return $e->getMessage();
}

1)那么在我的情况下哪个更好用 - 操作状态或例外?
2)一般情况下,何时使用操作状态(返回代码)和异常时?

1 个答案:

答案 0 :(得分:1)

当意外缺少某些操作要求时,最好使用例外。例如,我希望能够连接到数据库。如果我不能,那么即使在降级状态下我也无法提供应用程序。我抛出一个例外,因为我无法继续。如果我可以继续,那可能是我记录但不会抛出异常。

那就是说,对我而言,将它们用于控制流程是完全有效的。拥有所描述的所有返回代码似乎不是最优的,也不像异常选项那样可读。如果代码不可读,则不易维护。

相关问题