gpt4 book ai didi

php - Laravel处理用户生成的错误

转载 作者:行者123 更新时间:2023-12-03 07:40:25 25 4
gpt4 key购买 nike

我是Laravel的新手,在过去的应用程序中,我会生成用户警告或通知,并使用自定义错误处理程序,该程序将发送电子邮件。

错误通常发生在用户输入无法验证的无效数据或第三方API调用未返回结果的情况下。

我的麻烦是Laravel会暂停执行并显示任何错误的页面,因此生成错误可能不是我应该处理的方式,但是最好的方法(正确的是)是什么?

最佳答案

对于开发环境,建议在debug => true文件中使用app/config/app.php,这样您将获得内容丰富的错误消息。要禁用它以进行生产(推荐),只需将此值更改为false,例如:

/*
|--------------------------------------------------------------------------
| Application Debug Mode
|--------------------------------------------------------------------------
|
| When your application is in debug mode, detailed error messages with
| stack traces will be shown on every error that occurs within your
| application. If disabled, a simple generic error page is shown.
|
*/

'debug' => false

要注册自定义错误处理程序,您可以在 app/start/global.php文件中声明该处理程序,例如:
// For 404 not found error
App::missing(function($e){
return Redirect::to('/');
});

这将捕获所有 404 not found错误,但会注意到默认情况下该文件中提供了另一个错误处理程序,它是:
App::error(function(Exception $exception, $code)
{
Log::error($exception->getMessage());
});

这是 Laravel中最通用的错误处理程序,这意味着任何 un-handaled错误都将由该错误处理程序处理,这就是为什么要在此错误处理程序的底部声明您的特定错误处理程序,因为错误处理程序从底部向上气泡,而这个错误处理程序就是 parent所以最后(如果未注册任何自定义处理程序或未捕获错误),如果您未使用任何特定的处理程序处理错误并且在处理时未返回任何响应,则该处理程序将负责处理错误一个错误。

例如;要注册 ModelNotFoundException异常,您可以尝试以下操作:
App::error(function(Illuminate\Database\Eloquent\ModelNotFoundException $e)
{
return Response::make('Not Found', 404);
});

现在,由于您从处理程序返回了响应,因此父错误处理程序将不会被触发,并且响应将被发送到浏览器。如果您没有返回响应,则将触发最顶层的父处理程序,就像 event中的 JavaScript冒泡一样。

Laravel网站上阅读有关 Errors & Logging的更多信息。

关于php - Laravel处理用户生成的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23985944/

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