PHP异常和错误(4)如何优雅的处理PHP异常

2017-03-20 09:41:34 admin ...

前言:

上一节我们一起认识了一下exception内部异常类,并且介绍自定义的异常类的写法。但是在实际开发中,我们不可能每一种异常都要写出来,那有没有一种顶层异常类可以统一处理呢?

内容概要

1、顶层异常处理器的介绍
2、示例代码
3、异常的总结

一、顶层异常处理器的介绍

在PHP中有一个比较神奇的函数set_exception_handler(),这个函数可以通过设置用户自定的异常函数,来处理所有未捕获的异常。

比较绕人,我们举例说明,假设我们写了一个函数a();用来处理所有未捕获的异常,也就是顶层异常处理器。然后我们使用set_exception_handler(‘a’)的方式将自定义异常函数加载进来,用来统一处理没有捕获的异常,不用每次都catch。

好吧,你说还是有点绕,那看代码吧。

二、示例代码

不说话,上代码。

<?php
#自定义异常函数
function myException($e)
{
    echo 'PHP在路上说:'.$e->getMessage();
}
#将自定义异常函数注册到异常树中,统一处理所有抛出的异常
set_exception_handler('myException');

#抛出异常
throw new Exception('用英文拽一下-Uncaught Exception occurred');

代码解读:

1、我们创建自定义异常函数MyException,参数是一个exception实例对象。一旦出现异常,我们统一提示,语句如图。

2、我们将自定义的异常注册到顶层,默认处理所有抛出的异常。

3、我们不需要使用catch捕获异常,直接抛出异常就可以了。

比较优雅的处理方式。

三、php异常处理的总结

我们最后一个例子是大家经常用来处理异常的方法,说到这里,我们的异常处理貌似结束了。

不过,有一个重新抛出异常的处理方式还没说,其实就是捕获了异常之后再抛出一下用于封装,比较好理解,本文就偷懒一下不说啦。

相似文章