Sobes.tech
Middle+

Como você captura erros globais no lado do servidor?

sobes.tech IA

Resposta da IA

Existem várias abordagens comuns para capturar erros globais do lado do servidor:

  • Utilização de mecanismos integrados de frameworks/plataformas: A maioria dos frameworks do lado do servidor (Node.js com Express, Python com Django/Flask, Ruby com Rails, etc.) fornece manipuladores de erros integrados.

    // Exemplo para Express.js
    app.use((err, req, res, next) => {
      console.error(err.stack); // Registo do erro
      res.status(500).send('Algo correu mal!'); // Resposta ao cliente
    });
    
    # Exemplo para Flask
    @app.errorhandler(500)
    def internal_server_error(e):
        return "Algo correu mal!", 500
    
  • Captura de exceções não tratadas: Em ambientes de execução como Node.js, pode-se inscrever-se em eventos globais como unhandledRejection e uncaughtException para capturar erros que de outra forma causariam a queda do processo.

    // Exemplo para Node.js
    process.on('uncaughtException', (err) => {
      console.error('Exceção não tratada:', err);
      // Aqui pode-se realizar ações como enviar notificações ou terminar corretamente
      process.exit(1); // Terminar com erro
    });
    
    process.on('unhandledRejection', (reason, promise) => {
      console.error('Rejeição não tratada de promessa:', reason);
      // Aqui pode-se realizar ações como registar ou enviar notificações
    });
    
  • Registo centralizado: Enviar informações detalhadas de erros para um sistema de registo centralizado (por exemplo, ELK Stack, Sentry, Datadog) para análise, notificação e monitorização.

  • Utilização de middleware (para frameworks web): Criar middleware que envolva o processamento de pedidos e capture erros internos.

  • Aplicação de mecanismos de monitorização: Utilizar ferramentas de monitorização de desempenho de aplicações (APM) como New Relic, Dynatrace ou AppDynamics, que capturam e agregam automaticamente informações sobre erros.