当您的应用程序中抛出一般异常时,您必须这样做 读取堆栈跟踪以确定导致该错误的位置和原因 被抛出的异常。
(...)通过自定义例外,我们可以轻松识别哪个部分 我们的应用程序异常来自。
我不明白。使用默认的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;
}
那么自定义异常如何促进识别呢?
答案 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?";
}