Laravel show Whoops отладчик в среде разработки

Мне нужно иметь блоки try-catch внутри моей бизнес-логики. Таким образом, я могу сделать некоторые записи об ошибке с некоторым контекстом.

try {
    // business logic
} catch(Exception $e) {
    // Log message like 'Could not create user with email something@domain.com'
    $msgForUser = CustomErrorHandler::handleError($e, $data->email);

    // Display message like 'Your user was not created bla bla bla'
    return $msgForUser;
}

Я понимаю, что могу настроить пользовательскую обработку ошибок в App::error в start/global.phpоднако это исключает возможность включения переменных и сообщений, специфичных для этой функции.

Проблема в том, что теперь мои блоки try отлавливают ошибки в разработке. И я хотел бы все еще получить отладчик исключений Whoops в режиме разработки. Это возможно?

1 ответ

Решение

Вы немного боретесь с этим потоком, Laravel, похоже, склонен к использованию исключений для сообщения о реальных ошибках (по сравнению с использованием исключений для потока управления приложениями, как вы).

В Laravel нет ничего (что я знаю), что позволило бы вам сделать это. Я бы положил эту логику в ваш CustomErrorHandler::handleError метод

class CustomerErrorHandler
{
    //assuming `CustomerErrorHandler::handleError` is a static method
    //call.  If its a facade define an instance method in your service
    //class.
    static public function handleError($e)
    {
        if(...is environment where I want to see whoops...)
        {
            throw $e;
        }

        //if we're still here it's production
        //so do our logging and create a 
        //$msgForUser string

        //...

        return $msgForUser;
    }
}
Другие вопросы по тегам