处理期望catch块 - xdebug
问题描述:
我是新来的例外,所以我想学习它。处理期望catch块 - xdebug
我现在已经累的第一件事是复制粘贴从php.net文档代码:
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,这可能是这个原因吗?如果是,我该怎么做programmaticaly不会得到这个错误,但什么PHP文件写道。
UPDATE:
如果我加入它工作正常try
前xdebug_disable();
,并得到预期的输出。
我原来的问题转向:如何处理异常,并在xdebug启用时不显示这个丑陋的错误?
答
如果你不想永久性的,你可以卸载该扩展。 要禁用特定区域,请检查扩展extension_loaded
,并像这样禁用。
if (extension_loaded('xdebug')) {
xdebug_disable();
}
我刚在这里检查你的代码:https://eval.in/746991 – C2486
@Niklesh是的,我明白了。我已经更新了我的问题。 – vaso123
我不认为它的丑陋,它更详细的错误查看您安装'xdebug' – C2486