PHP вложенные try catch

141
17 декабря 2019, 15:10

Как перехватить Exception в функции на уровне выше?

Например, у меня есть метод:

public static function getResponse(string $string)
{
    //.....
    try {
        $response = $this->client->post($this->url, [
                'query' => $queryUrl,
                'body'  => $queryBodyEncoded,
            ] + $this->options);
    } catch (RequestException $e) {
        throw new ErrorException($e->getMessage());
    }
    //.....
    }

Я вызываю этот метод из своего класса:

try {
     myClass::getResponse($string);
    } catch (RequestException $e) {
        echo $e->getMessage();
}

По итогу все ошибки обрабатываются в первом try catch (вложенном). Как поймать и обработать Exception в моей функции?

Answer 1

В методе перехватывается исключение RequestException и вызывается ErrorException. Соответственно, чтобы перехватить его выше, нужно перехватывать именно ErrorException, так как возникает уже именно оно

try {
    myClass::getResponse($string);
} catch (ErrorException $e) {
    echo $e->getMessage();
}

Либо оставить как было, но в методе либо вызывать снова throw new RequestException(), либо вообще его не перехватывать в методе

READ ALSO
ООП php: как добавить middleware?

ООП php: как добавить middleware?

Всем привет! Есть интерфейс IHandler:

158
Почему Laravel меняет хеш пароля в бд?

Почему Laravel меняет хеш пароля в бд?

Перестает авторизировать пользователя спустя несколько дней после регистрацииВ БД все данные остаются

159
Получить данные массива JSON из URL через PHP скрипт

Получить данные массива JSON из URL через PHP скрипт

Есть данные JSON(многомерный массив(больше трех вложенных друг в друга): https://apitrademc

143
fopen() Для создания .html файлов

fopen() Для создания .html файлов

для проекта делаю загрузку файлов с расширениемhtml

172