PHP попробуй поймать пропуская поймать, напрямую прыгнув наконец

Хорошо, я очень смущен. Я использую Slim Framework и у меня есть следующий код:

1 $app->post("/user/login", function (Request $request, Response $response) {
2    $resp = null;
3    try {
4       if (!array_key_exists("password", $request->getParams()) || !array_key_exists("username", $request->getParams())) {
5            throw new LiberInvalidRequestException("Not all required parameters were passed.");
6        }
7        $user = new User($this->db, [
8            'username' => $request->getParam('username'),
9            'password' => $request->getParam('password')
10        ]);
11        try {
12            $resp['logincode'] = $user->login();
13            $resp['success'] = true;
14        } catch (LiberAuthenticationException $exception) {
15            $resp['success'] = false;
16            $resp['errormessage'] = $exception->getMessage();
17        }
18    } catch (LiberInvalidRequestException $exception) {
19        $resp['success'] = false;
20        $resp['errormessage'] = $exception->getMessage();
21    } finally {
22        return $response->withJson($resp);
23    }
24 });

Когда я называю этот маршрут с правильными параметрами, я получаю null ответ. На мой взгляд, это не должно быть возможным, потому что всячески $resp, Когда я выполняю эту функцию с помощью отладчика, я могу перейти до строки 12, после чего отладчик переходит к блоку finally (строка 22).

Как это вообще возможно? Не следует ли продолжить выполнение или перейти к блоку catch?

0

Решение

Хорошо, я нашел решение проблемы. Как сказал @deceze, было создано исключение, что блок catch не перехватил. Поскольку я использую PHP7.1, операторы include могут генерировать исключения. Это причина, почему исключение было брошено в первую очередь.

0

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

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

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