Sobes.tech
Middle

Como acompanhas e monitorizas os erros em JavaScript?

sobes.tech IA

Resposta da IA

Errores em JavaScript monitorizo e acompanho das seguintes formas:

  • Consola do navegador: Ferramenta principal para depuração na fase de desenvolvimento. Mensagens de erro (sintéticas, lógicas, em tempo de execução) são exibidas indicando o arquivo e a linha.

  • Blocos try...catch: Capturam erros de execução, permitindo tratá-los ou exibir informações adicionais.

    try {
      // Código que pode causar erro
      let result = riskyOperation();
    } catch (error) {
      // Tratamento do erro
      console.error("Ocorreu um erro:", error.message);
      // Pode enviar o erro ao servidor
      sendErrorToServer(error);
    }
    
  • window.onerror: Manipulador global para erros não capturados em JavaScript. Permite interceptar erros que "passaram" pelo try...catch.

    window.onerror = function(message, source, lineno, colno, error) {
      console.error("Erro global:", message, source, lineno, colno);
      // Envio de informações do erro ao servidor
      sendErrorToServer({
        message: message,
        source: source,
        lineno: lineno,
        colno: colno,
        stack: error ? error.stack : 'N/A'
      });
      return true; // Retorna true para suprimir a exibição padrão do erro na consola
    };
    
  • Evento unhandledrejection para Promises: Captura erros não tratados em promessas.

    window.addEventListener('unhandledrejection', function(event) {
      console.error('Rejeição de promessa não tratada:', event.reason);
      // Envio de informações do erro ao servidor
      sendErrorToServer(event.reason);
    });
    
  • Sistemas de monitoramento de erros (Sentry, Bugsnag, Rollbar): Serviços profissionais que coletam, agregam e analisam erros em tempo real. Oferecem rastreamento de pilha, informações do ambiente do usuário, frequência de erros e notificações. São a ferramenta principal em produção.

  • Registro no servidor: Os erros capturados no frontend via try...catch, onerror ou unhandledrejection são enviados ao servidor para armazenamento e análise centralizada.

A escolha do método depende da fase de desenvolvimento e da criticidade do erro. Em produção, sempre uso uma combinação de try...catch, manipuladores globais e sistemas de monitoramento.