Laravel 5.5 $ исключение instanceof AuthenticationException не работает должным образом

ребята. Я новичок в Laravel. Только что установил 5.5 и попробуйте перехватить AuthenticationException в App \ Исключения \ Handler как ниже

public function render($request, Exception $exception)
{
if ($exception instanceof AuthenticationException) {
//Do something
}
}

Проблема в том, что ($ исключение instanceof AuthenticationException) всегда возвращает false.

dd($exception instanceof AuthenticationException) //return false.

Когда я дд ($ исключение) я получил

AuthenticationException{
#gurad...
....
.....
}

Тогда я пытаюсь

get_class($exception) return \Illuminate\Auth\AuthenticationException

Тем не мение,

dd($exception instanceof Exception) //return true.

Пожалуйста помоги. Благодарю.

1

Решение

Вы должны убедиться, что вы используете класс из допустимого пространства имен:

public function render($request, Exception $exception)
{
if ($exception instanceof \Illuminate\Auth\AuthenticationException) {
//Do something
}

return parent::render($request, $exception);
}

Ты упомянул:

dd ($ исключение 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 будет запущен первым.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]