php - 处理期望 catch block - xdebug

标签 php exception 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,这可能是这个原因吗?如果是,我应该如何编程才能不出现此错误,而是 php 文档写的内容。

更新:

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

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

最佳答案

如果您不想永久删除该扩展,则可以卸载该扩展。 要禁用特定区域,请检查扩展 extension_loaded,然后像这样禁用。

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

关于php - 处理期望 catch block - xdebug,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42575756/

相关文章:

javascript - 使用ajax清空(val)html字段并在数据库中的该字段中输入下一个值

android - 如何使用PackageManager.setComponentEnabledSetting

linux - 从 Linux 上的 docker 容器内部连接到主机需要打开防火墙端口

javax.persistence.NoResultException : getSingleResult() did not retrieve any entities

php - Xdebug - 更改 var_dump 嵌套级别

cakephp - 我们需要在 CakePHP 上测试私有(private)函数吗?

PHP 和 Gettext 在我的服务器上不工作

php - 将 PHP 数组存储在单个 SQL 单元格中

php - 一次查询中的 MySQL 多个更新集

ruby - 在 Ruby 中,为什么堆栈跟踪中没有变量名?