延伸Exceptions有助于识别,这意味着什么

时间:2017-01-01 14:59:22

标签: php exception-handling

  

当您的应用程序中抛出一般异常时,您必须这样做   读取堆栈跟踪以确定导致该错误的位置和原因   被抛出的异常。

     

(...)通过自定义例外,我们可以轻松识别哪个部分   我们的应用程序异常来自。

我不明白。使用默认的Exception堆栈跟踪指示我最初抛出异常的行。

function foo($i)
{
    if ($i<0){
        throw new Exception("<0");
    }
    if ($i>0){
        throw new Exception(">0");
    }

}

try {
    foo(1);
} catch (Exception $e) {
    throw $e;
}

那么自定义异常如何促进识别呢?

1 个答案:

答案 0 :(得分:1)

使用像Exception这样的通用异常,您必须通读堆栈跟踪以了解正在发生的事情。自定义异常可以在其类型中传达此信息,允许您以编程方式解决此问题:

function foo($i)
{
    if ($i<0){
        throw new NegativeInputException($i);
    }
    if ($i>0){
        throw new PositiveInputException($i);
    }

}

try {
    foo(getFromUser());
} catch (NegativeInputException $e) {
    echo "why would you input a negative number?";
} catch (PositiveInputException $e) {
    echo "why would you input a positive number?";
}