我对异常很陌生,所以我正在努力学习它。
我现在厌倦的第一件事就是从 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,这可能是这个原因吗?如果是,我应该如何编程才能不出现此错误,而是 php 文档写的内容。
更新:
如果我在 try
之前添加 xdebug_disable();
,它可以正常工作,并获得预期的输出。
我原来的问题变成:如何处理异常并且在启用 xdebug 时不显示这个丑陋的错误?
最佳答案
如果您不想永久删除该扩展,则可以卸载该扩展。
要禁用特定区域,请检查扩展 extension_loaded
,然后像这样禁用。
if (extension_loaded('xdebug')) {
xdebug_disable();
}
关于php - 处理期望 catch block - xdebug,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42575756/