致命错误:没有这样的id - API响应(PHP)

时间:2015-12-09 05:10:31

标签: php api

我正在尝试从API获取所有信息,我不知道API可以获得的每个ID。所以基本上我在增加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++;
    }
}

我的错误代码:

  

致命错误:未捕获此类ID(状态:404;网址:....)

有没有办法让程序不会因致命错误而停止?或者它使用一个更高的ID重新启动致命错误的脚本?

1 个答案:

答案 0 :(得分:1)

我相信你会看到一个未被捕捉的Exception。查看catch块?这意味着&#34;未被捕获&#34;。

试试这个:

<?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)查看API投放的确切类型Exception