我在Laravel中实现异常。我很感激Laravel在一个地方处理所有例外情况!
Laravel还允许我们根据状态创建一些常见错误的登录页面,例如要抓住404,请在404.blade.php
上创建views/errors
。现在,我想了解一些与http相关的常见错误,例如404,401,403和405使它们自动重定向到其命名视图,然后对于所有其他错误,我想将它们重定向到常见错误登录页面。
问题是:如何让Laravel知道它应该在调用其他非http相关错误之前自动处理“命名”错误?
这是我到目前为止所做的,但例外似乎不是HttpException
的实例。我怎么能抓住它们呢?
// app/Exceptions/Handler.php
public function render($request, Exception $e)
{
// I want these ones to be picked and routed to the relevant page (401, 403, 404, 405)
if($e instanceof HttpException && $e->getStatusCode()== 404)
{
return response()->view('errors.404');
}
elseif($e instanceof HttpException && $e->getStatusCode()== 405)
{
return response()->view('errors.405');
}
elseif($e instanceof HttpException && $e->getStatusCode()== 401)
{
return $this->unauthenticated($request,$e);
}
elseif($e instanceof HttpException && $e->getStatusCode()== 403)
{
return response()->view('errors.403');
}
elseif($e instanceof ModelNotFoundException)
{
return response()->view('error.model-not-found');
}
// // then the rest can go to a common page
return response()->view('errors.caught-errors', [
'error' => 'Error encountered.',
'description' => 'Brief public-friendly description.'
]);
// Laravel default renderer
//return parent::render($request, $e);
}