Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Tratamento de Exceções em API Laravel

Prezados,

Estou com a seguinte dúvida: tenho um controller que chama várias classes de serviço para executar sua tarefa. Quando algo dá errado em uma dessas classes de serviço o laravel retorna um erro 500. Gostaria de saber como devo fazer o tratamento de exceções nas minhas classes de serviço para não retornar o erro 500 e sim uma mensagem com o real motivo do erro, por exemplo um argumento que deveria ser do tipo date e recebeu nulo. Essas classes de serviço a que me referi realizam várias tarefas, desde obter dados até gerar XML.

Grato

2 respostas
solução!

Eu faria algo parecido com isso.

public function gerarXML(Request $request)
{
    try {
         if (is_null($request->has('data'))) {
                throw new Exception('Informe uma Data', 400);
            }
    } catch (Throwable $e) {
           return response()->json($th->getMessage(), ($th->getCode() >= 200 && $th->getCode() <= 599) ? $th->getCode() : 500);
    }
}

obs: não esqueça os imports:

use Throwable;
 use Exception;

Se for validações mais simples (validar tipo, obrigatório...) eu faria assim:

 public function gerarXML(Request $request)
    {
        $request->validate([
            'data'  => 'required|date',
        ],
        [
         'data.required'  => 'Informe uma Data',
         'data.date'  => 'Data é invalida',
        ]);

      *****
}

Documentação: https://laravel.com/docs/9.x/validation

Obrigado Deigon Prates Araujo

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software