人。我是Laravel的新手。刚安装5.5并尝试在 App \ Exceptions \ Handler 中捕获AuthenticationException,如下所示
public function render($request, Exception $exception)
{
if ($exception instanceof AuthenticationException) {
//Do something
}
}
问题是($ exception instanceof AuthenticationException)总是返回false。
dd($exception instanceof AuthenticationException) //return false.
当我dd($ exception)我得到了
AuthenticationException{
#gurad...
....
.....
}
然后我尝试
get_class($exception) return \Illuminate\Auth\AuthenticationException
然而,
dd($exception instanceof Exception) //return true.
请帮忙。感谢。
答案 0 :(得分:3)
您应该确保使用有效命名空间中的类:
public function render($request, Exception $exception)
{
if ($exception instanceof \Illuminate\Auth\AuthenticationException) {
//Do something
}
return parent::render($request, $exception);
}
你提到了:
dd($ exception instanceof Exception)//返回true。
这是真的。每个将扩展Exception类的异常类都将返回true,这就是为什么在你的处理程序中你应该确保首先验证特定的类而不是异常类,例如,如果你使用了:
public function render($request, Exception $exception)
{
if ($exception instanceof Exception) {
//Do something 1
}
if ($exception instanceof \Illuminate\Auth\AuthenticationException) {
//Do something 2
}
return parent::render($request, $exception);
}
始终会//Do something 1
首先发布。