PHP 7 错误处理 (Fatal error: Uncaught Exception: PHP E_ERROR: Uncaught Exception: PHP 0: Return value o)

前些天在为一个微信小游戏写接口,之前接触挺少的,所以踩了挺多坑的,遇到了一个致命错误,但是却是以抛出异常的形式报告。刚开始想把它作为异常进行try-catch进行捕获并返回内容,但却发现并不能捕获。

错误信息描述:接口中给微信提供的用户授权信息解密时报错:Fatal error: Uncaught Exception: PHP E_ERROR: Uncaught Exception: PHP 0: Return value of EasyWeChat\MiniProgram\Encryptor::decryptData() must be of the type array, null returned.

错误的内容提示,方法声明了返回类型为数组,结果返回的是null。刚开始我把它当作异常进行处理,然后返回失效信息,结果发现并不能捕获这个异常。

原因就是,这个并实质并不是普通的异常,而是一个致命错误,只是PHP 7 改变了大多数错误的报告方式,不同于传统(PHP 5)的错误报告机制,现在大多数错误被作为 Error 异常抛出,所以这个是一个错误异常。

而Error 类并非继承自 Exception 类,所以不能用 catch (Exception $e) { … } 来捕获 Error。但可以用 catch (Error $e) { … },或者通过注册异常处理函数( set_exception_handler())来捕获 Error。

问题到此也就解决。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值