如何为 QueryException 创建错误页面?
How to create an error page to a QueryException?
我正在开发一个商业应用程序,我已经为多种 HTTP 错误创建了 Blade 文件。它们位于 /resources/views/errors
中,并且在授权 (503.blade.php)、未找到页面 (404.blade.php) 等方面工作正常。
到目前为止,我已经为 400、403、404、500 和 503 创建了文件。
问题是抛出 QueryException
时。在这种情况下,出现"Whoops, looks like something went wrong."。
例如,考虑到 name
不能为 null,当我这样做时,Laravel 抛出一个 QueryException
:
User::create([
'name' => null,
'email' => 'some@email.com'
]);
例外情况是:
QueryException in Connection.php line 651: SQLSTATE[23000]: Integrity
constraint violation: 1048 Column 'name' cannot be null (SQL: insert
into users
(nome
, email
, updated_at
, created_at
) values (,
some@email.com, 2018-02-09 12:10:50, 2018-02-09 12:10:50))
我不想 "Whoops, looks like something went wrong." 显示给最终用户,我想显示一个自定义页面。我需要创建什么样的错误文件才能实现此行为?
在你的控制器中试试这个:
try {
User::create([
'name' => null,
'email' => 'some@email.com'
]);
} catch ( \Illuminate\Database\QueryException $e) {
// show custom view
//Or
dump($e->errorInfo);
}
捕获所有查询异常:
您需要自定义 App\Exceptions\Handler
的 render()
方法,如 Docs 中所述。
public function render($request, Exception $e)
{
if ( $e instanceof \Illuminate\Database\QueryException ) {
// show custom view
//Or
dump($e->errorInfo);
}
return parent::render($request, $exception);
}
我正在开发一个商业应用程序,我已经为多种 HTTP 错误创建了 Blade 文件。它们位于 /resources/views/errors
中,并且在授权 (503.blade.php)、未找到页面 (404.blade.php) 等方面工作正常。
到目前为止,我已经为 400、403、404、500 和 503 创建了文件。
问题是抛出 QueryException
时。在这种情况下,出现"Whoops, looks like something went wrong."。
例如,考虑到 name
不能为 null,当我这样做时,Laravel 抛出一个 QueryException
:
User::create([
'name' => null,
'email' => 'some@email.com'
]);
例外情况是:
QueryException in Connection.php line 651: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'name' cannot be null (SQL: insert into
users
(nome
,updated_at
,created_at
) values (, some@email.com, 2018-02-09 12:10:50, 2018-02-09 12:10:50))
我不想 "Whoops, looks like something went wrong." 显示给最终用户,我想显示一个自定义页面。我需要创建什么样的错误文件才能实现此行为?
在你的控制器中试试这个:
try {
User::create([
'name' => null,
'email' => 'some@email.com'
]);
} catch ( \Illuminate\Database\QueryException $e) {
// show custom view
//Or
dump($e->errorInfo);
}
捕获所有查询异常:
您需要自定义 App\Exceptions\Handler
的 render()
方法,如 Docs 中所述。
public function render($request, Exception $e)
{
if ( $e instanceof \Illuminate\Database\QueryException ) {
// show custom view
//Or
dump($e->errorInfo);
}
return parent::render($request, $exception);
}