当前位置: 首页 > news >正文

php捕获Fatal error错误与异常处理

在php5的版本中,如果出现致命错误是无法被 try {} catch 捕获的,如下所示:

<?phperror_reporting(E_ALL);
ini_set('display_errors', 'on');try {hello();
} catch (\Exception $e) {echo $e->getMessage();
}

运行脚本,最终php报出一个Fatal error,并程序中止

Fatal error: Uncaught Error: Call to undefined function hello()

有些时候,我们需要捕获这种错误,并做相应的处理。

那就需要用到 register_shutdown_function() 和 error_get_last() 来捕获错误

<?phperror_reporting(E_ALL);
ini_set('display_errors', 'on');//注册一个会在php中止时执行的函数
register_shutdown_function(function () {//获取最后发生的错误$error = error_get_last();if (!empty($error)) {echo $error['message'], '<br>';echo $error['file'], ' ', $error['line'];}
});hello();

对于php7中的错误捕获,因为php7中定义了 Throwable 接口,大部分的 Error 和 Exception 实现了该接口。

所以我们在php7中,可以通过 try {} catch(\Throwable $e) 来捕获php5中无法捕获到的错误

http://www.lryc.cn/news/302967.html

相关文章:

  • PyCharm 调试过程中控制台 (Console) 窗口内运行命令 - 实时获取中间状态
  • MacBook Pro如何安装rust编程环境
  • SparkUI任务启动参数介绍(148个参数)
  • nginx 安装
  • 手撕扩散模型(一)| 训练部分——前向扩散,反向预测代码全解析
  • linux 防火墙
  • Go应用性能分析实战
  • MySQL的索引类型
  • picker选择器-年月日选择
  • 【LeetCode-494】目标和(回溯动归)
  • 力扣 188. 买卖股票的最佳时机 IV
  • 【Go语言】Go项目工程管理
  • 美容小程序:让预约更简单,服务更贴心
  • 【递归】:原理、应用与案例解析 ,助你深入理解递归核心思想
  • 【 Maven 】花式玩法之多模块项目
  • LeetCode 热题 100 Day01
  • [vscode]vue js部分结尾加分号
  • 友点CMS image_upload.php 文件上传漏洞复现
  • C语言—指针(3)
  • 【八股文】面向对象基础
  • Day49 647 回文子串 516 最长回文子序列
  • 探秘GNU/Linux Shell:命令行的魔法世界
  • 基于STM32F407的coreJSON使用教程
  • keepalived双主模式测试
  • 微服务中的熔断、降级和限流
  • 2023年便宜的云服务器分享:最低26元4核16G
  • 汽车零部件制造业MES系统解决方案
  • 区块链/加密币/敏感/特殊题材专供外媒发稿,英文多国语言海外新闻营销推广
  • 初识Nginx
  • Rust语言之多线程