自己整理的PHP异常处理的学习笔记:
PHP中的异常处理
1、语法:
try {
.....;
} catch(Exception $e) {
......;
} finally {
......; // 总是会被执行的代码(例如关闭文件),不管是否出现了异常
}
2、异常处理过程的核心语句:
throw new Exception("错误提示消息"); //抛出一个错误,基于‘Exception’类,分配一个新的实例
catch(Exception $e); //捕获抛出的'Exception'类的实例,并将此实例赋值给一个对象变量
$e->getLine(); //通过此对象获取异常所发生的行号
$e->getMessage(); //通过此对象获取异常所提示的信息
3、扩展自定义的异常类:
可以基于基础异常类扩展出自定义的Exception扩展类。
在自定义的过程中,可以更改构造函数(以接收新的参数),同时新增自定义的错误处理方法。
实际执行中,可以抛出这个自定义的异常类(传递新的参数),然后捕获此类的实例,使用捕获生成的对象,访问自定义的错误处理方法。
可以定义多个扩展的异常类,以应对不同的错误(抛出时分配不同的错误实例),同时针对每种抛出的异常进行捕获和处理
PHP的标准类库中,已经定义了13种扩展的异常类:
4、PHP标准库(SPL)中,预定义的两种共13个扩展异常类:
1)LogicException (extends Exception)
说明:程序逻辑中的错误的异常。这种异常应该直接在代码中进行修复。
- BadFunctionCallException:如果回调函数引用未定义的函数或缺少某些参数,则引发异常。
- BadMethodCallException:当一个回调方法是一个未定义的方法或缺失一些参数时会引发该异常。
- DomainException:如果值不符合已定义的有效数据域,则引发异常。
- InvalidArgumentException:如果实参不是所期望的类型,则引发异常。
- LengthException:如果长度无效,则引发异常。
- OutOfRangeException:请求非法索引时引发的异常,这是在编译时检测到的错误。
2)RuntimeException (extends Exception)
如果发生了只能在运行时中找到的错误,则抛出异常。
- OutOfBoundsException:如果值不是有效键,则引发异常。这是一类在编译时无法检测到的错误。
- OverflowException:向满容器中添加元素,导致溢出时引发的异常。
- RangeException:范围错误引发的异常。通常情况下是算术错误而不是溢出错误。这是DomainException异常在运行时出错的情况。
- UnderflowException:在空容器上执行无效操作(如删除元素)时引发的异常。
- UnexpectedValueException:如果值与一组值不匹配,则引发异常。发生这种异常的典型场景是:当一个函数调用另一个函数并期望返回某种类型的值,或返回不包含算术和缓冲区相关错误的值。