我正在尝试从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重新启动致命错误的脚本?
答案 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
。