php – 如何在其他try catch块中处理异常?
发布时间:2020-12-13 22:28:29 所属栏目:PHP教程 来源:网络整理
导读:我的例子: class CustomException extends Exception {}class FirstClass { function method() { try { $get = external(); if (!isset($get['ok'])) { throw new CustomException; } return $get; } catch (Exception $ex) { echo 'ERROR1'; die(); } }}c
我的例子:
class CustomException extends Exception { } class FirstClass { function method() { try { $get = external(); if (!isset($get['ok'])) { throw new CustomException; } return $get; } catch (Exception $ex) { echo 'ERROR1'; die(); } } } class SecondClass { function get() { try { $firstClass = new FirstClass(); $get = $firstClass->method(); } catch (CustomException $e) { echo 'ERROR2'; die(); } } } $secondClass = new SecondClass(); $secondClass->get(); 这让我回复“ERROR1”,但我想从SecondClass收到“ERROR2”. 在FirstClass块中,try catch应该处理来自external()方法的错误. 我该怎么做? 解决方法
您应该抛出另一个异常并注册一个全局异常处理程序,而不是打印错误消息并终止整个php进程,该异常处理程序对未处理的异常进行异常处理.
class CustomException extends Exception { } class FirstClass { function method() { try { $get = external(); if (!isset($get['ok'])) { throw new CustomException; } return $get; } catch (Exception $ex) { // maybe do some cleanups.. throw $ex; } } } class SecondClass { function get() { try { $firstClass = new FirstClass(); $get = $firstClass->method(); } catch (CustomException $e) { // some other cleanups throw $e; } } } $secondClass = new SecondClass(); $secondClass->get(); 您可以使用set_exception_handler注册一个全局异常处理程序 set_exception_handler(function ($exception) { echo "Uncaught exception: ",$exception->getMessage(),"n"; }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |