irmaos-dev / mural

20 stars 14 forks source link

Componente de erro do client não exibe a mensagem do server #69

Closed irmaosdev1 closed 1 week ago

irmaosdev1 commented 3 weeks ago

Descreva o bug

Ao informar um erro do sistema no client, ele exibe apenas uma mensagem genérica, em vez de transmitir a mensagem do server.

Como reproduzir

Existem várias formas, mas uma é:

  1. Altere a senha do banco de dados no .env do server
  2. Rode o client e a mensagem genérica deve aparecer.

Comportamento esperado

Gostaria que o "message" recebido do server fosse exibido caso a aplicação esteja em ambiente de desenvolvimento.

Screenshots (optional)

Componente de erro genérico: image

Mensagem vinda do server: image

RuanSalles commented 2 weeks ago

Eu aconselharia, dentro do controller que está sendo chamado pelo método encapsular o método com um try catch, da seguinte maneira:

Try { joga a implementação aqui dentro } catch (Exception $e) { return response()->json($e->getMessage) }

Assim você fará com que o erro seja tratado e jogado como resposta para o Front-End

cristianoapps commented 2 weeks ago

Minha sugestão é parecida com a do @RuanSalles. Minha sugestão é, criar uma variavel de estado no topo do componente que chama a api , essa variável pode se chamar error, conforme exemplo abaixo

const [error, setError] = useState(null);

logo após, na implementação da chamada da api, envolver o método com um try catch para capturarmos a exceção que vem do backend, por exemplo :

const pegarDadosBack= async () => { try { setError(null); await fetchDataFromApi(); } catch (err) { setError(err.message); // Nessa linha você seta o erro obtido na chamada da api, caso realmente exista erro } };

Logo após, basta mostrar na div o valor que está no estado error

Erro que apareceu ${error}

Como eu havia dito na live do youtube, pela experiência que tenho com desenvolvimento, em Java, geralmente as mensagens de erro do back não são mostradas em tela, a menos que sejam mensagens tratadas, que estejam voltadas para uma regra de negócio do sistema.

As mensagem de erro de fato, seja um problema com conexão com o banco de dados, chamada de api, etc, geralmente colocamos no log da aplicação, para que posteriormente utilizando alguma ferramenta de logs, possamos corrigir o erro em si.

As mensagens de erro da aplicação não precisam aparecer para o usuário.