Как перехватить ошибку в методе PHP?

187
01 сентября 2018, 04:20

В каком-то месте "падает" метод:

fwrite($fc, "[1]");
$arOrders = $obmen->runObmenOrdersIn();
fwrite($fc, [2]");

т.е., запись "1" есть, а "2" - уже нет.

Поставил в методе исключение в надежде найти место, где что-то не так и получить текст ошибки:

public function runObmenOrdersIn() {
        try{
            $allOrders['NEW'] = $this->getOrdersLast('NEW');
            $this->insertOrdersInDB($allOrders['NEW']);
            unset($allOrders['NEW']);
            $allOrders['CHANGED'] = $this->getOrdersLast('CHANGED');
            $this->updateOrdersInDB($allOrders['CHANGED']);
            unset($allOrders['CHANGED']);
            $allOrders['CANCELED'] = $this->getOrdersLast('CANCELED');
            $this->updateCanseledOrdersInDB($allOrders['CANCELED']);
            unset($allOrders['CANCELED']);
        }
        catch (Exception $ex) {
            return $ex->getMessage();
        }
    }

Записываю, что возвращает метод:

$arOrders = $obmen->runObmenOrdersIn();
fwrite($fc, $arOrders);

Пусто. Подскажите, как правильно это реализовать?

Answer 1

Внутри метода через каждую строчку пишете что нибудь типа

fwrite($fc, $alert");
exit();

где $alert- просто строка с текстом и удаляйте это последовательно до тех пор пока не увидите что следующая строчка не выводиться, и вы поймете на какой строчке все "падает"

Answer 2

Есть такая ф-ия register_shutdown_function , с её помощью можно поймать все ошибки и краши. Использовать примерно так:

register_shutdown_function( "callback" );
function callback()
{
    var_dump(error_get_last());
}
$a='string';
$a->a();
READ ALSO
Построчная запись и удаление из БД

Построчная запись и удаление из БД

Допустим в поле БД надо поместить список id пользователей, для этого, вероятнее всего, надо юзать массив с разделителями

175
parser php ошибка find()

parser php ошибка find()

Fatal error: Uncaught Error: Call to a member function find() on boolean

167
Ошибка при запросе на wordpress

Ошибка при запросе на wordpress

Хочу выполнить данный SQL запрос, но он не выводит ничего

176
Передача пути к файлу, выбранного через input = file, через ajax

Передача пути к файлу, выбранного через input = file, через ajax

Проблема состоит в том, что я не могу передать временный путь к файлу, чтобы в дальнейшем, в скрипте-обработчике конвертировать его в markdown-текст

196