gpt4 book ai didi

Laravel 5.5 Try/Catch 不工作它执行异常句柄

转载 作者:行者123 更新时间:2023-12-01 22:09:04 24 4
gpt4 key购买 nike

我正在使用 laravel 5.5 我编写了一个带有 try and catch exception 的代码。但是 Try/catch 不管理异常处理。在 Exception/handle.php

上执行异常

这是我正在关注的代码

try {
App\Models\justDoIt::find(1);
} catch (\Exception $ex) {
dd($ex);
report($ex);
return false;
}

我想知道为什么在 report() 中的 handle.php 不执行 catch 并显示错误

这里是handle.php代码

public function report(Exception $exception) {
echo "Handle";
dd($exception);
parent::report($exception);
}

结果

Handle
FatalThrowableError {#284 ▼
#message: "Class 'App\Http\Controllers\App\Models\justDoIt' not found"
#code: 0
#file: "D:\xampp7\htdocs\homeexpert_nik\app\Http\Controllers\HomeController.php"
#line: 21
#severity: E_ERROR
trace: {▶}
}

结果将从 handle.php 文件中显示。

最佳答案

您的代码抛出错误,而不是异常。您正在尝试使用一个不存在的类,而 PHP 通过抛出 FatalThrowableError 来提示它。

在 PHP 5 中,此代码会导致在浏览器中呈现 fatal error 消息,但是在 PHP 7(Laravel 5.5 需要)中,PHP 现在会像异常一样抛出错误。这允许应用程序捕获这些错误,就像使用 try/catch block 的异常一样。

错误转义 try/catch block 的原因是错误不是 Exception 或其子项。抛出的对象是一个错误ExceptionError 类都实现了一个公共(public)接口(interface),Throwable

Throwable
- Exception
- Error

Laravel 的异常处理程序被编写为捕获这两个类,以便显示您看到的错误页面。

如果您将代码更改为以下内容,您会发现应该执行 } catch (Throwable $e) { block :

try {
App\Models\justDoIt::find(1);
} catch (\Exception $ex) {
dd('Exception block', $ex);
} catch (\Throwable $ex) {
dd('Throwable block', $ex);
}

有关这方面的更多信息,请参阅 here .


一个额外的补充:如果您想知道您的代码有什么问题,那是因为您可能忘记了在您的 Controller 中使用您的模型类:

use App\Models\justDoIt;

关于Laravel 5.5 Try/Catch 不工作它执行异常句柄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49564188/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com