当前位置:  首页>> 技术小册>> PHP8入门与项目实战(5)

异常处理用于在指定的错误(异常)情况发生时改变脚本的正常流程。当异常被触发时,通常会发生以下动作:
·当前代码状态被保存。

·代码执行被切换到预定义的异常处理器函数。

·根据情况,处理器也许会从保存的代码状态重新开始执行代码,终止脚本执行,或从代码中另外的位置继续执行脚本。

当异常被抛出时,其后的代码不会继续执行,PHP会尝试查找匹配的catch代码块。如果异常没有被捕获,而且又没有使用set_exception_handler()做相应的处理,就会发生一个严重的错误,并且输出Uncaught Exception(未捕获异常)的错误消息。

下面的实例抛出一个异常,同时不去捕获它。

【例9.6】

运行后结果如图9-9所示。由于没有捕获异常,因此出现了下面的错误提示消息。

如果想避免出现上面的错误,需要创建适当的代码来处理异常。处理异常的程序应当包括如下几个部分。

·try代码块:使用异常的函数应该位于try代码块内。若没有触发异常,则代码将照常继续执行。但是如果异常被触发,就会抛出一个异常。

·throw代码块:这里规定如何触发异常。每一个throw必须对应至少一个catch。

·catch代码块:catch代码块会捕获异常,并创建一个包含异常信息的对象。

【例9.7】

运行后结果如图9-10所示。由于抛出异常后捕获了异常,因此出现了下面的提示消息。


【案例分析】
(1)首先创建checkNum()函数,用于检测数字是否大于1。如果是,则抛出一个异常。

(2)在try代码块中调用checkNum()函数。

(3)checkNum()函数中的异常被抛出。

(4)catch代码块接收到该异常,并创建一个包含异常信息的对象($e)。

(5)通过从这个exception对象调用$e->getMessage(),输出来自该异常的错误消息。