我正在处理商业应用程序,并且我已经为几种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 进入
users
(nome
,updated_at
,created_at
)值(, some@email.com,2018-02-09 12:10:50,2018-02-09 12:10:50))
我不想要"哎呀,看起来出了问题。" 向最终用户展示,我想展示一个自定义页面。我需要创建什么样的错误文件才能实现此行为?
答案 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