Sobes.tech
Middle+

Cum capturați erorile globale pe partea serverului?

sobes.tech AI

Răspuns de la AI

Există mai multe abordări comune pentru captarea erorilor globale pe partea serverului:

  • Utilizarea mecanismelor încorporate ale framework-urilor/platformelor: Majoritatea framework-urilor server-side (Node.js cu Express, Python cu Django/Flask, Ruby cu Rails etc.) oferă handleri de erori încorporați.

    // Exemplu pentru Express.js
    app.use((err, req, res, next) => {
      console.error(err.stack); // Înregistrarea erorii
      res.status(500).send('Ceva nu a mers bine!'); // Răspuns către client
    });
    
    # Exemplu pentru Flask
    @app.errorhandler(500)
    def internal_server_error(e):
        return "Ceva nu a mers bine!", 500
    
  • Captarea excepțiilor necontrolate: În medii de execuție precum Node.js, se pot subscrie la evenimente globale precum unhandledRejection și uncaughtException pentru a captura erorile care altfel ar duce la prăbușirea procesului.

    // Exemplu pentru Node.js
    process.on('uncaughtException', (err) => {
      console.error('Excepție necontrolată:', err);
      // Aici se pot realiza acțiuni precum trimiterea de notificări sau închiderea corectă
      process.exit(1); // Încheiere cu eroare
    });
    
    process.on('unhandledRejection', (reason, promise) => {
      console.error('Refuz necontrolat al promisiunii:', reason);
      // Aici se pot realiza acțiuni precum logarea sau trimiterea de notificări
    });
    
  • Logare centralizată: Trimiterea informațiilor detaliate despre erori într-un sistem de logare centralizat (de exemplu, ELK Stack, Sentry, Datadog) pentru analiză, notificări și monitorizare.

  • Utilizarea middleware-ului (pentru framework-uri web): Crearea unui middleware care învelește procesarea cererilor și capturează erorile interne.

  • Utilizarea instrumentelor de monitorizare: Folosirea instrumentelor de monitorizare a performanței aplicațiilor (APM) precum New Relic, Dynatrace sau AppDynamics, care capturează și agregă automat informațiile despre erori.