个人随笔
技术改变世界

PHP 异常处理 try

php
异常处理的基本思想是代码在try代码块被调用执行。如下代码所示的就是一个示例

<?php
    try
    {
        //一些有趣的代码
    }
?>

如果try代码块出现某些错误,我们可以执行一个抛出异常的操作。某些编程语言,例如Java,在特定情况下将自动抛出异常。在PHP中,异常必须手动抛出。可以使用如下方式抛出一个异常:

throw new Exception('message',code);

throw关键字将触发异常处理机制。它是一个语言结构,而不是一个函数,但是必修给它传递一个值。它要求接收一个对象。在最简单的情况下,可以实例化一个内置的Exception类,就像以上代码所示。

这个类的构造函数需要两个参数:一个消息和一个代码。它们分别表示一个错误消息和错误代码号。这两个参数都是可选的。

最后,在try代码块之后,必须至少给出一个catch代码块。catch代码块可以如下所示:

    catch ( typehint exception)
    {
        // 处理异常
    }

可以将多个catch代码块与一个try代码块进行关联。如果每个catch代码块可以捕获一个不同类型的异常,那么使用多个catch代码块是有意义的。例如,如果希望捕获Exception类的异常,catch代码块可以如下所示:

    catch (Exception $e)
    {
        // 处理异常
    }

传递给catch代码块的对象(也是被catch代码块捕获的)就是导致一场并传递给throw语句的对象(被throw语句抛出)。该异常可以是任何类型的,但是使用Exception类的实例,或从Exception类继承过来并由用户定义的异常类实例,都是不错的选择。

当产生一个异常时,PHP将查询一个匹配的catch代码块。如果有多个catch代码块,传递给每一个catch代码块的对象必须具有不同的类型,这样PHP可以找到需要进入哪一个catch代码块。

需要注意的另外一点是,还可以在一个catch代码块产生新的异常。

要更清楚的介绍这一点,我们来了解一个示例。

<?php
    try
    {
        throw new Exception("发生了可怕的错误", 42);
    }
    catch(Exception $e)
    {
        echo "错误 ".$e->getCode().":".$e->getMessage()."<br />".
        " 在 ".$e->getFile()." 。行号".$e->getLine()."<br />";
    }
?>

在以上代码中,可以看到我们使用了Exception类的一些方法来显示我们的错误信息,下面是以上代码的运行结果。
php
catch代码块报告了异常错误消息以及发生的错误位置的说明。

转载请注明出处王旭博客 » PHP 异常处理 try

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址