如何为QueryException创建错误页面?

时间:2018-02-09 12:22:53

标签: php laravel laravel-5.1

我正在处理商业应用程序,并且我已经为几种HTTP错误创建了Blade文件。它们被放置在/resources/views/errors中,并且正在进行授权(503.blade.php),找不到页面(404.blade.php),等等。

到目前为止,我已为400,403,404,500和503创建了文件。 问题是抛出QueryException时。在这种情况下,"哎呀,看起来出了问题。" 出现。

例如,考虑到name不能为空,当我做这样的事情时,Laravel会抛出QueryException

User::create([
          'name' => null,
          'email' => 'some@email.com'
]);

例外情况是:

  

Connection.php第651行中的QueryException:SQLSTATE [23000]:完整性   约束违规:1048列'名称'不能为null(SQL:insert   进入usersnomeemailupdated_atcreated_at)值(,   some@email.com,2018-02-09 12:10:50,2018-02-09 12:10:50))

我不想要"哎呀,看起来出了问题。" 向最终用户展示,我想展示一个自定义页面。我需要创建什么样的错误文件才能实现此行为?

1 个答案:

答案 0 :(得分:2)

在您的控制器中尝试此操作:

try {
    User::create([
          'name' => null,
          'email' => 'some@email.com'
    ]);
} catch ( \Illuminate\Database\QueryException $e) {
    // show custom view
    //Or
    dump($e->errorInfo);
}

要捕获所有查询例外:

您需要自定义render()的{​​{1}}方法,如Docs中所述。

App\Exceptions\Handler