我是异常的新手,所以我正在努力学习它。
我现在感到厌烦的第一件事是复制粘贴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时不显示这个丑陋的错误?
答案 0 :(得分:1)
如果您不想永久删除,可以卸载该扩展程序。
要禁用特定区域,请检查扩展extension_loaded
,并禁用此类。
if (extension_loaded('xdebug')) {
xdebug_disable();
}