PHP中的异常和错误

不同的语言,异常和错误不同。在其他语言中的异常很多在PHP中属于错误,不能被自动抛出。所以要手动抛出,但这时候会感觉很鸡肋。but,有set_error_handler()、register_shutdown_function()两大结合可以捕捉所有类型错误的方法(set_exception_handler()捕捉异常的方法)

错误触发器:trigger_error();

错误和异常可以结合用,(本来PHP中大多数也是属于错误),触发错误捕获错误,捕获后抛出异常,捕获异常。这就相当于其他语言的自动捕获异常了

###

为什么register_shutdown_function()不能触发,为什么框架中是可以的?其实原因很简单,只在parse-time出错时是不会调用本函数的。只有在run-time出错的时候,才会调用本函数,我的理解是语法检查器前没有执行register_shutdown_function()去把需要注册的函数放到调用的堆栈中,所以就根本不会运行。那框架中为什么任何错误都能进入到register_shutdown_function()中呢,其实在框架中一般会有统一的入口index.php,然后每个类库文件都会通过include ** 的方式加载到index.php中,相当与所有的程序都会在index.php中聚集,同样,你写的具有语法错误的文件也会被引入到入口文件中,这样的话,调用框架,执行index.php,index.php本身并没有语法错误,也就不会产生parse-time错误,而是 include 文件出错了,是run-time的时候出错了,所以框架执行完之后就会触发register_shutdown_function();

https://www.cnblogs.com/zyf-zhaoyafei/p/6928149.html

###

https://blog.csdn.net/the_victory/article/details/51481941

错误不仅可以指定记录错误报告日志,PHP还可以记录错误到操作系统(Linux和Windows都可以)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值