使用以下代码,我试图计算-0.25,-0.333,-0.5,-1,抛出异常,然后继续计数1,0.5,0.333,0.25。
到目前为止,我遇到了异常,然后我无法弄清楚如何继续计算。
function inverse($x)
{
if (!$x) {
throw new Exception('Division by zero.');
}
else return 1/$x;
}
try {
for ($i=-4; $i<=4; $i++) {
echo inverse($i) . "\n<br>";
}
}
catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n<br>";
}
// Continue execution
echo 'Hello World';
?>
我尝试将echo inverse(-$i) . "\n<br>";
添加到TRY部分,但没有成功。它继续计数,但没有发现异常。
有什么建议吗?
谢谢!
答案 0 :(得分:2)
你的catch在for循环之外,所以一旦捕获到异常,for循环就会结束。
尝试
for ($i=-4; $i<=4; $i++) {
try {
echo inverse($i) . "\n<br>";
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n<br>";
}
}
代替。
答案 1 :(得分:0)
将try|catch
放入循环中:
for ($i=-4; $i<=4; $i++) {
try {
echo inverse($i) . "\n<br>";
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n<br>";
}
}
答案 2 :(得分:0)
或者只是改变你的代码:
function inverse($x)
{
if (!$x) {
return 'Division by zero.';
}
else return 1/$x;
}
try {
for ($i=-4; $i<=4; $i++) {
echo inverse($i) . "\n<br>";
}
}
catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n<br>";
}
// Continue execution
echo 'Hello World';
?>