嵌套函数中引发的(蛋糕)PHP错误无法恢复为初始函数

时间:2018-12-03 20:25:31

标签: php error-handling cakephp-2.3

这不一定是CakePHP问题,但我使用的是CakePHP 2.8和PHP 5.6。

我有一个名为save_order的函数,该函数使用try / catch调用另一个名为changePathItemOrder的函数。该函数调用另一个名为_reorderItemsOnPath的函数,该函数依次调用另一个名为_moveItemsForwards的函数。它有几个层次,所以这里有一些图形,可以使我们全都保持跟踪:

Cascade of Functions

sort / order中的try / catch是:

$data['status'] = 'success';
try {
    $this->PathRepository->deletePathItemFromPath($milestoneId, $pathId, $accountId);
} catch(Exception $e) {
    debug('Caught error');
    $data['status'] = 'error';
    $data['message'] = $e->getMessage();
}
$this->set(compact('data'));
$this->render('/Elements/json');

如果_moveItemsForwards中发生错误,我会抛出类似这样的错误:

throw new InternalErrorException('Invalid path item ID: ' . $pathItemId);

问题在于sort_order中的try / catch无法捕获_moveItemsForwards引发的错误。捕获甚至没有执行,因为调试未显示在结果错误消息中。我刚得到以下错误:-

500 Error! Something broke!
Return to the homepage
Invalid path item ID: 76

处理此错误并将错误消息返回到save_order函数的最佳方法是什么?

0 个答案:

没有答案