处理预防捕获块 - xdebug

时间:2017-03-03 09:57:31

标签: php exception-handling xdebug

我是异常的新手,所以我正在努力学习它。

我现在感到厌烦的第一件事是复制粘贴php.net doc中的代码:

function inverse($x) {
    if (!$x) {
        throw new Exception('Division by zero.');
    }
    return 1 / $x;
}

try {
    echo inverse(5) . "\n";
    echo inverse(0) . "\n";
} catch (Exception $e) {
    echo 'Caught exception: ', $e->getMessage(), "\n";
}

// Continue execution
echo "Hello World\n";

文件说,输出将是:

0.2
Caught exception: Division by zero.
Hello World

我期待这个输出,因为我知道这是异常处理的重点,没有显示带有跟踪的丑陋的大错误代码。

而不是这个输出我得到了:

0.2
( ! ) Exception: Division by zero. in D:\Apache\htdocs\SO\index.php on line 10
Call Stack
#   Time    Memory  Function    Location
1   0.0005  363040  {main}( )   ...\index.php:0
2   0.0009  363584  inverse( )  ...\index.php:17
Caught exception: Division by zero. Hello World 

为什么我收到此错误?我正在使用xDebug,这可能是这个原因吗?如果是的话,我应该以编程方式做什么来解决这个错误,但是php文档写的是什么。

更新

如果我在xdebug_disable();之前添加try它正常工作,并获得预期的输出。

我原来的问题转向:如何处理异常并在启用xdebug时不显示这个丑陋的错误?

1 个答案:

答案 0 :(得分:1)

如果您不想永久删除,可以卸载该扩展程序。 要禁用特定区域,请检查扩展extension_loaded,并禁用此类。

if (extension_loaded('xdebug')) {
  xdebug_disable();
}