php异常捕获

2021-10-15
try {
	echo '伪代码';
} catch (Exception $e) {
	echo '异常类型1';
} catch (Throwable $e) {
    echo '异常类型2';
} finally {
	echo '无论是否发生异常总会执行';
}

异常类

Throwable

Throwable是能被throw语句抛出的最基本的接口(interface)(包括 Error和Exception)

PHP类不能直接实现Throwable接口,而应当扩展Exception

Throwable::getMessage — 获取消息
Throwable::getCode — 获取异常代码
Throwable::getFile — 获取在其中创建对象的文件
Throwable::getLine — 获取实例化对象的行
Throwable::getTrace — 获取堆栈跟踪
Throwable::getTraceAsString — 以字符串形式获取堆栈跟踪
Throwable::getPrevious  — 返回上一个Throwable
Throwable::__toString — 获取所抛出对象的字符串表示形式

Exception

所有异常的基类

Exception::__construct — 异常构造函数
Exception::getMessage — 获取异常消息内容
Exception::getPrevious — 返回异常链中的前一个异常
Exception::getCode — 获取异常代码
Exception::getFile — 创建异常时的程序文件名称
Exception::getLine — 获取创建的异常所在文件中的行号
Exception::getTrace — 获取异常追踪信息
Exception::getTraceAsString — 获取字符串类型的异常追踪信息
Exception::__toString — 将异常对象转换为字符串
Exception::__clone — 异常克隆

Error

所有PHP内部错误类的基类

Error::__construct — 初始化 error 对象
Error::getMessage — 获取错误信息
Error::getPrevious — 返回先前的 Throwable
Error::getCode — 获取错误代码
Error::getFile — 获取错误发生时的文件
Error::getLine — 获取错误发生时的行号
Error::getTrace — 获取调用栈(stack trace)
Error::getTraceAsString — 获取字符串形式的调用栈(stack trace)
Error::__toString — error 的字符串表达
Error::__clone — 克隆 error

ArgumentCountError

当传递给用户定义的函数或方法的参数太少时被抛出

ArithmeticError

当执行数学运算时发生错误时被抛出

AssertionError

在函数 assert() 断言失败时被抛出

DivisionByZeroError

当除数为零时被抛出

CompileError

针对一些编译错误抛出的,之前是会发出致命错误

ParseError

当解析PHP代码时发生错误时抛出,比如当eval()被调用出错时;从PHP 7.3.0开始,ParseError继承自CompileError。之前的版本,则继承自Error

TypeError

有三种情况会抛出 TypeError。

  1. 传递给函数的参数类型与函数预期声明的参数类型不匹配;
  2. 函数返回的值与声明的函数返回类型不匹配;
  3. 调用PHP内置函数时,传递了非法的数字参数(仅限严格模式下)

 

{/if}