如何在Zend Framework PHP中使用异常处理?遇Exception未找到错误
解决Zend Framework中Exception找不到的问题
你遇到的问题是命名空间导致的类查找错误,Zend Framework(尤其是ZF2/ZF3版本)是基于命名空间开发的,直接写Exception时,PHP会默认在当前类的命名空间下去寻找这个类,而原生PHP的Exception类是属于全局命名空间的,所以才会报“Exception not found”的错误。
两种可行的解决方案:
1. 直接调用全局命名空间的Exception
在Exception前加上反斜杠\,明确告诉PHP去全局命名空间查找这个类:
try { if ($user_session_object['device_type'] == '1') { $this->sendNotificationAndroidOne($notificationData); } throw new \Exception("newInner"); if ($user_session_object['device_type'] == '2') { $this->sendNotificationIphone($notificationData); } }catch(\Exception $ex){ echo 'Exception occur while send push notification'; exit; }
2. 在类顶部导入Exception类
在你的控制器/类文件的命名空间声明之后,添加导入语句:
use Exception;
之后就可以像你原来的写法一样直接使用Exception,无需额外加反斜杠。
额外的逻辑提醒
你当前的代码里,在Android通知判断后直接无条件抛出了异常,这会导致后面的iPhone通知代码永远不会执行——不管device_type是否为2,程序都会直接进入catch块并退出。如果这不是你的预期逻辑,建议调整异常抛出的位置,比如只在特定错误场景(比如通知发送失败)时再抛出异常。
内容的提问来源于stack exchange,提问作者Deepak
相关产品推荐
相关产品推荐

