PHP面试题更新 2026-08-05

请描述 PHP 中常见的错误处理方式,并说明如何进行自定义错误处理。

风险判断技术原理问题排查PHP

考察说明

考查对 PHP 错误处理机制的理解及自定义处理能力。

回答思路

  1. 【回答框架 1】PHP 错误处理主要涉及三种方式:错误报告(error_reporting)、自定义错误处理函数(set_error_handler)以及异常处理(try-catch)。错误报告用于控制显示哪些错误,通过配置 error_reporting 和 display_errors 实现,适用于开发和生产环境。
  2. 【回答框架 2】自定义错误处理通过 set_error_handler 注册一个回调函数,该函数接收错误级别、错误消息、文件名和行号等参数,可自行记录日志或转换错误形式。注意 set_error_handler 不会捕获所有错误类型,例如 E_ERROR、E_PARSE 等致命错误无法被捕获。
  3. 【回答框架 3】异常处理针对可抛出的错误,通过 try-catch 块捕获 Exception 或 Error 对象,适用于业务逻辑错误。可使用 set_exception_handler 设置全局异常处理函数,处理未捕获的异常,并配合 restore_error_handler 恢复默认处理。
  4. 【回答框架 4】PHP 7 中引入 Error 类,区分可恢复错误和不可恢复错误,导致传统错误处理方式需调整。推荐使用抛出异常和 try-catch 的方式处理业务错误,而将低级别错误交由自定义错误处理函数记录日志。
  5. 【关键点 1】错误报告级别控制通过 error_reporting 和 display_errors 配置。
  6. 【关键点 2】set_error_handler 可捕获 E_WARNING、E_NOTICE 等非致命错误,但无法捕获致命错误。
  7. 【关键点 3】set_exception_handler 用于全局异常处理,未捕获的异常由该函数处理。
  8. 【关键点 4】PHP 7 后应区分 Error 与 Exception,都实现 Throwable 接口。
  9. 【关键点 5】生产环境应关闭错误显示,开启日志记录。
  10. 【易错点 1】不能依赖 set_error_handler 捕获所有错误,尤其是 E_ERROR 和 E_PARSE。
  11. 【易错点 2】错误处理函数中若未返回 false,会阻止 PHP 标准错误处理,可能导致日志遗漏。
  12. 【易错点 3】自定义错误处理应避免输出敏感信息,防止生产环境信息泄露。