set_exception_handler

本文介绍了一种在PHP中使用set_exception_handler方法来处理未预见异常的技术。这种方法作为try-catch的有效补充,可以在Yii2框架中用于捕捉那些常规手段难以捕获的异常。

set_exception_handler(array($this,'exception_handler'));

   public function exception_handler($oException) {


        Yii::$app->log4->writeLog('DEV_DEBUG',__FUNCTION__);  

        //return 100;
        exit(100);


    }

尽快php里有了try catch

但是有些异常仍然防不胜防

这时候设置一个set_exception_handler比较保险点

可以说这个方法是try catch的有效补充,用来处理预料之外的异常

在yii2里,虽然有actionError,还是在beforeAction里设置了这么一个玩意儿

注意最后的return和exit

用exit的话,用shell调yii2的各个batch运行起来就会得到最后100这个值

否则用return的话,一直是0。


C:\Users\Administrator\Documents\Arduino\sketch_jun18a_copy_20250620142542_copy_20250706090617\sketch_jun18a_copy_20250620142542_copy_20250706090617.ino:61:18: error: variable or field 'custom_exception_handler' declared void 61 | extern "C" void custom_exception_handler(EXCEPTION_INFO* exc_info) { | ^~~~~~~~~~~~~~~~~~~~~~~~ C:\Users\Administrator\Documents\Arduino\sketch_jun18a_copy_20250620142542_copy_20250706090617\sketch_jun18a_copy_20250620142542_copy_20250706090617.ino:61:43: error: 'EXCEPTION_INFO' was not declared in this scope 61 | extern "C" void custom_exception_handler(EXCEPTION_INFO* exc_info) { | ^~~~~~~~~~~~~~ C:\Users\Administrator\Documents\Arduino\sketch_jun18a_copy_20250620142542_copy_20250706090617\sketch_jun18a_copy_20250620142542_copy_20250706090617.ino:61:59: error: 'exc_info' was not declared in this scope 61 | extern "C" void custom_exception_handler(EXCEPTION_INFO* exc_info) { | ^~~~~~~~ C:\Users\Administrator\Documents\Arduino\sketch_jun18a_copy_20250620142542_copy_20250706090617\sketch_jun18a_copy_20250620142542_copy_20250706090617.ino:61:17: error: variable or field 'custom_exception_handler' declared void 61 | extern "C" void custom_exception_handler(EXCEPTION_INFO* exc_info) { | ^~~~~~~~~~~~~~~~~~~~~~~~ C:\Users\Administrator\Documents\Arduino\sketch_jun18a_copy_20250620142542_copy_20250706090617\sketch_jun18a_copy_20250620142542_copy_20250706090617.ino:61:42: error: 'EXCEPTION_INFO' was not declared in this scope 61 | extern "C" void custom_exception_handler(EXCEPTION_INFO* exc_info) { | ^~~~~~~~~~~~~~ C:\Users\Administrator\Documents\Arduino\sketch_jun18a_copy_20250620142542_copy_20250706090617\sketch_jun18a_copy_20250620142542_copy_20250706090617.ino:61:58: error: 'exc_info' was not declared in this scope 61 | extern "C" void custom_exception_handler(EXCEPTION_INFO* exc_info) { | ^~~~~~~~ C:\Users\Administrator\Documents\Arduino\sketch_jun18a_copy_20250620142542_copy_20250706090617\sketch_jun18a_copy_20250620142542_copy_20250706090617.ino: In function 'void setup()': C:\Users\Administrator\Documents\Arduino\sketch_jun18a_copy_20250620142542_copy_20250706090617\sketch_jun18a_copy_20250620142542_copy_20250706090617.ino:143:27: error: 'custom_exception_handler' was not declared in this scope; did you mean '_xtos_set_exception_handler'? 143 | set_exception_handler(custom_exception_handler); | ^~~~~~~~~~~~~~~~~~~~~~~~ | _xtos_set_exception_handler C:\Users\Administrator\Documents\Arduino\sketch_jun18a_copy_20250620142542_copy_20250706090617\sketch_jun18a_copy_20250620142542_copy_20250706090617.ino:143:5: error: 'set_exception_handler' was not declared in this scope; did you mean '_xtos_set_exception_handler'? 143 | set_exception_handler(custom_exception_handler); | ^~~~~~~~~~~~~~~~~~~~~ | _xtos_set_exception_handler exit status 1 Compilation error: variable or field 'custom_exception_handler' declared void
最新发布
07-25
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值