@klis

Как в Yii2 отловить ErrorException при ошибке fsockopen()?

Открываю сокет самым обычным образом:
$socket = fsockopen("tcp://$hostname", $port, $errno, $errstr, 3);

Предполагаю, что если что-то не так (порт закрыт, например), то $socket == false и хочу сообщить об этом пользователю. Однако у Yii2 свое мнение на этот счет и оно на этой строке падает, сообщая об ошибке:

PHP Warning – yii\base\ErrorException

fsockopen(): unable to connect to tcp://<...> (Connection refused)

Попытка отловить исключение ничего не дает. Результат ровно тот же.
try {
  				$socket = fsockopen("tcp://$hostname", $port, $errno, $errstr, 3);
  				// do something
  				fclose($socket);
} catch(ErrorException $e) {
  // do nothing
}

Что я делаю не так?
  • Вопрос задан
  • 809 просмотров
Решения вопроса 1
@matperez
Вот так вроде работает:
$errno = null;
        $errstr = null;
        try {
            $socket = fsockopen("tcp://127.0.0.1", 8085, $errno, $errstr, 3);
            fclose($socket);
        } catch(\ErrorException $e) {
            var_dump(get_class($e));
        }


Получаю string(23) "yii\base\ErrorException"

Проверьте, что у вас класс исключения с учетом нейспейса указан "\ErrorException"
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы