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

致命错误:未捕获没有这样的id-API响应(PHP),php,api,Php,Api,我试图从一个API中获取所有信息,但我不知道API可以获取的每个ID。因此,基本上我在增加ID的同时,一个接一个地呼叫1个信息: <?php $i = 0; while ($i < 1000) { if ($api->traits()->get($i) == "Uncaught no such id") { echo "do something"; $i++; } else { ec

我试图从一个API中获取所有信息,但我不知道API可以获取的每个ID。因此,基本上我在增加ID的同时,一个接一个地呼叫1个信息:

<?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++;
    }
}

我相信你看到的是一个未破坏的。请参见
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++;
}
我还应该补充一点,
Exception
是异常的基本类型或类,API和库通常会抛出更具体的异常类型

catch (Exception $ex) { ... }
将捕获任何类型的异常,但

catch (HttpConnectionException $ex) { ... }

将仅捕获类型为
HttpConnectionException
的异常。这允许您以不同的方式处理特定类型的错误。如果您愿意,您可以使用
get\u class($ex)
查看API抛出的
异常的确切类型。

哇,谢谢您,先生。我现在正在微笑。我不认为这是可能的,我想“我该不该发布这个愚蠢的问题”没问题,很高兴我能帮助你!我还在底部添加了一个注释,关于捕获特定类型的异常,而不是捕获“所有异常”;但是,我的原始帖子中的PHP文档链接也解释了这一点。
catch (HttpConnectionException $ex) { ... }