Try / Catch не работает в PHP, не ловит исключение? - PullRequest
0 голосов
/ 16 мая 2019

Почему Try / Catch не работает?

try {
    $tagsData = $vid["items"][0]["snippet"]["tags"];
    $tagsArray = array();
    $tagsString = "";
    for ($x = 0; $x < count($tagsData); $x++) {
        $tagsArray[$x] = $tagsData[$x];
        $tagsString .= $tagsArray[$x] . "  ,  ";
    }
    echo $tagsString;
} catch (\Exception $e) {
    echo "There is no tags.";
}

На youtube есть видео, у которых нет тегов, поэтому $ tagsData будет нулевым ...

1 Ответ

0 голосов
/ 17 мая 2019

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

function implementTagsStrings(?array $tagsData = []){
    if (!isset($vid["items"][0]["snippet"]["tags"])) {
        throw new \Exception("There is no tags.");
    }
    $tagsData = $vid["items"][0]["snippet"]["tags"];
    $tagsArray = [];
    $tagsString = "";
    for ($x = 0; $x < count($tagsData); $x++) {
        $tagsArray[$x] = $tagsData[$x];
        $tagsString .= $tagsArray[$x] . "  ,  ";
    }
    if (empty($tagsString)) {
        throw new \Exception("There is no tags.");
    }
    return $tagsString;
}

Тогда ваш код будет работать:

try {
    $tagsString = implementTagsStrings($vid);
    echo $tagsString;
} catch (\Exception $e) {
    echo $e->getMessage();
}

Но комментарии Нигеля, возможно, более простые:

    if (!isset($vid["items"][0]["snippet"]["tags"])) {
      echo "There is no tags.";
    } else {
        $tagsArray = array();
        $tagsString = "";
        for ($x = 0; $x < count($tagsData); $x++) {
            $tagsArray[$x] = $tagsData[$x];
            $tagsString .= $tagsArray[$x] . "  ,  ";
        }
        echo $tagsString;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...