PHP7 中的错误


简介

在 7 版本之前,PHP 解析器用于在响应各种条件时报告错误。每个错误都属于某种预定义的类型。PHP7 改变了错误报告的机制。大多数错误现在通过抛出错误异常来报告,而不是传统的错误报告。

如果错误异常未被处理,则会报告致命错误,并像传统错误条件一样进行处理。PHP 的错误层次结构从 **Throwable** 接口开始。所有预定义的错误,如 **ArithmeticError**、**AssertionError**、**CompileError** 和 **TypeError** 都是实现 Throwable 接口的类。PHP 7 中的异常也实现了 Throwable 接口。

Throwable 接口充当任何可以通过 throw 语句抛出的对象的基类,包括 **Error** 和 **Exception** 对象。用户定义的类不能直接实现 Throwable 接口。相反,要声明用户定义的异常类,它必须扩展 **Exception** 类。

PHP 的异常处理包含 **throw**、**catch**、**try** 语句。要引发异常对象,可以使用 **throw** 关键字。抛出的异常由 **catch** 块处理。可能存在异常风险的 PHP 代码包含在 **try** 块中。

可以存在一个或多个 catch 块来捕获 Exception 类的不同实例。当 try 块中没有发生异常时,正常执行将在最后一个 catch 块之后继续。但是,当 try 块内部抛出异常时,PHP 会尝试查找与要处理的异常类型匹配的 catch 块,而不是执行嵌套语句。如果未定义匹配的 catch 块,PHP 解析器将报告 **致命错误**,并显示 **未捕获的异常** 消息。

您也可以在 catch 块之后或代替 catch 块提供 **finally** 块。finally 块中的代码将始终执行,无论 try 块中是否发生异常。

更新于: 2020-09-18

300 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告