Я пытаюсь поймать ошибку из моего класса JWT, но я не могу сделать это внутри класса, единственное место, которое я могу получить, это от моего основного вызывающего ,PHP не поймает ошибку внутри класса, только на вызывающем абоненте
Я звоню этот класс с ошибкой с моей «API», где я начать с маршрутизацией:
$router = new Router();
$router->all('/users', function()
{
$controller = new Controllers\UserController();
$controller->start();
});
$router->run();
После этого у меня есть мой контроллер, который будет вызывать мой «API» класс:
class UserAPI extends BaseAPI
{
protected $user;
protected $apiBase = "user";
function __construct($request, $origin)
{
parent::__construct($request);
$this->user = new User();
}
protected function logout()
{
if(isset($this->request[$this->apiBase . 'Data']))
{
return $this->usuario->login($this->request[$this->apiBase . 'Data']);
}
else
{
return Helpers::errorResponse("User data not informed", 200);
}
}
}
И, наконец, у меня есть проблемы, класс пользователя, где я хочу, чтобы поймать ошибку, но это не будет работать:
class User extends SimpleModel
{
public function logout($userData)
{
try
{
//At this point i will get an error since the provided token is invalid on purpose
$jwt = JWT::decode($userData['token'], SECRET_KEY, ['HS512']);
}
//Wont hit here even for a miracle
catch (Exception $exception)
{
echo "Caught ExceptFoo\n";
echo "Message: {$exception->getMessage()}\n";
}
}
}
Единственное место, где я мог поймать эту ошибку, было в файле маршрутизации, который является моим файлом index.php.
Для класса JWT я использую Firebase JWT.
Возможно, ваш класс 'User' находится в пространстве имен. Если это так, вам нужно «catch (\ Exception $ exception)». – bishop
@bishop, который сработал, не может поверить, что это было так просто! не могли бы вы объяснить, почему это произошло как ответ, чтобы я мог его принять? Tks – Terkhos
@ Джонатан: нет. PHP ленив загружен, и такие вещи, как «instanceof» и «catch», не будут проверять наличие интерфейсов, если они не нужны. Отлично подходит для производительности, но это может быть плохо для людей, которые не унифицируют обработку исключений. – Evert