php - laravel 无法处理异常,catch block 未执行

标签 php exception laravel-5.6

我正在创建一个在远程服务器上执行各种操作的 SSH 机器人。这些服务器的用户名和密码由用户提供。

但是当用户提供错误的用户名或密码或错误的服务器 IP 地址时,它会抛出 ErrorException 异常。

我想处理该异常并将错误消息存储在数据库中。而不是将其显示给用户。

这是我的代码

try {
                $pending_server->console_output = $this->setupDNS($pending_server->toArray());
                $pending_server->status = 'Configured';
            } catch (ErrorException $e) {
                $pending_server->console_output = $e->getMessage;
                $pending_server->status = 'Failed';
                $pending_server->save();
            }

数据库中$pending_server是数据库模型。 setupDNS 方法抛出异常。 因此,如果出现异常,我想将错误消息作为输出存储在数据库中。但 catch block 根本没有执行,脚本的执行也停止了。

最佳答案

只需将 '\' 放在 ErrorException 之前即可。例如:

try {
                $pending_server->console_output = $this->setupDNS($pending_server->toArray());
                $pending_server->status = 'Configured';
            } catch (\ErrorException $e) {
                $pending_server->console_output = $e->getMessage;
                $pending_server->status = 'Failed';
                $pending_server->save();
            }

关于php - laravel 无法处理异常,catch block 未执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52144148/

相关文章:

php - 自动完成在 Vtiger 中返回空结果

java - Java可序列化(加载对象并打印)

java - 如何防止 InputStream.readObject() 抛出 EOFException?

java - 检查Java异常的定义?

php - Laravel 中显示类别、子类别和子子类别时出错

mysql - 使用 laravel 更新日期时间列

php - 从 MySQL 转换 Yii 查询

php - 如何使用 PHP 和 MySQL 中的表单更新行位置?

php - 如何在一个 View 中显示两个模型值并通过一个 Controller 更新两个模型值