Является ли такой подход плохим в работе с исключениями, если в методе render сразу же возвращать ответ в формате json?



@donnnny

Не является ли такой подход плохим в работе с исключениями, если в методе render сразу же возвращать ответ в формате json, вот пример:

namespace App\Exceptions\Telegram;

use DomainException;
use Illuminate\Http\Response;

class InvalidDataTelegramException extends DomainException
{
    public function render()
    {
        return response(
            ['message' => __('auth.incorrect_telegram')],
            Response::HTTP_UNPROCESSABLE_ENTITY,
        );
    }
}


Решения вопроса 0


Ответы на вопрос 2



@iljaGolubev

Исключение без стандартных message, code. Фикс json респонз. Не делайте так.
Это сейчас вам достаточно всегда получать json. Но что будет при вызове из консоли? а в логах?

Как минимум — релиазовать Illuminate\Contracts\Support\Responsable.
А если Symfony\Component\HttpKernel\Exception\HttpExceptionInterface релиазовать или просто наследовать от HttpException то в вашем случае будет достаточно

throw new InvalidDataTelegramException(Response::HTTP_UNPROCESSABLE_ENTITY, __('auth.incorrect_telegram');

Illuminate\Foundation\Exceptions\Handler сделает тоже, что вы и даже больше.



@VladimirAndreev

Имхо, таки рендерить исключения для клиента лучше или в контроллере, или в команде, где там у вас точка входа.
Иначе, если у вас исключение знает, как его обрабатывать — то какое же это исключение?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *