Неустранимая ошибка: не найден такой идентификатор - ответ API (PHP)

1

Я пытаюсь получить всю информацию из API, где я не знаю ни одного идентификатора, который может получить API. Поэтому в основном я звоню за одной информацией за другой, пока я увеличиваю ID:

<?php

$i = 0;
while ($i < 1000)
{
    if ($api->traits()->get($i) == "Uncaught no such id")
    {
        echo "do something";
        $i++;
    }
    else
    {
        echo "do something else";
        $i++;
    }
}

Мой код ошибки:

Неустранимая ошибка: не обнаружен такой идентификатор (статус: 404; url:....)

Есть ли способ, которым программа не останавливается на фатальной ошибке? Или что он перезагружает сценарий при фатальной ошибке с одним более высоким идентификатором?

Теги:

1 ответ

1
Лучший ответ

Я считаю, что вы видите исключение для неввода. Смотрите блок catch? Это то, что значит "неотображение".

Попробуй это:

<?php
$i = 0;
while ($i < 1000)
{
    try
    {
        $trait = $api->traits()->get($i);
    }
    catch (Exception $ex)
    {
        echo "Error: " . $ex->getMessage();
        echo "(do something else)";

        $i++;
        continue;
    }


    echo "found trait " . $trait;
    $i++;
}

Кроме того, это, вероятно, ситуация, в которой вы должны использовать for цикла вместо в while цикла.

<?php
for ($i = 0; $i < 1000; $i++)
{
    try
    {
        $trait = $api->traits()->get($i);
    }
    catch (Exception $ex)
    {
        echo "Error: " . $ex->getMessage();
        echo "(do something else)";

        continue;
    }


    echo "found trait " . $trait;
}

Я также должен добавить, что Exception - это базовый тип или класс исключения, а API и библиотеки обычно генерируют более специфический тип исключения.

catch (Exception $ex) { ... }

поймает любой тип исключения, но

catch (HttpConnectionException $ex) { ... }

только поймает исключение типа HttpConnectionException. Это позволяет обрабатывать определенные типы ошибок по-разному. Вы можете использовать get_class($ex) чтобы узнать, какой именно тип Exception API бросает, если хотите.

  • 1
    Вау, спасибо, сэр. Я улыбаюсь прямо сейчас. Я не думал, что это возможно, и мне казалось, «мне стоит опубликовать эту глупую проблему или нет»
  • 0
    Нет проблем, рад, что смог вам помочь! Я также добавил примечание внизу о ловле определенных типов исключений, а не о «всех исключениях»; но ссылка на документацию PHP в моем оригинальном посте также объясняет это.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню