PHP尝试和捕获例外

时间:2013-12-06 18:20:24

标签: php exception try-catch

使用以下代码,我试图计算-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部分,但没有成功。它继续计数,但没有发现异常。

有什么建议吗?

谢谢!

3 个答案:

答案 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';

    ?>