(Торт) Ошибка PHP, возникающая во вложенной функции, не возвращает к исходной функции - PullRequest
0 голосов
/ 03 декабря 2018

Это не обязательно проблема CakePHP, но я использую CakePHP 2.8 и PHP 5.6.

У меня есть функция с именем save_order, которая вызывает другую функцию с именем changePathItemOrder, используя try / catch.Эта функция вызывает другую функцию с именем _reorderItemsOnPath, которая, в свою очередь, вызывает другую функцию с именем _moveItemsForwards.Глубина в несколько уровней, так что вот небольшая графика, чтобы держать нас всех в курсе:

Каскад функций

try / catch в sort_order:

$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);

Проблема в том, что try / catch в sort_order не перехватывает ошибку, выданную _moveItemsForwards.Перехват не выполняется даже потому, что отладка не отображается в получающемся сообщении об ошибке.Я просто получаю следующее сообщение об ошибке: -

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

Как лучше всего обработать эту ошибку и вернуть сообщение об ошибке в функцию save_order?

...