Sobes.tech
Middle+

Come intercetti gli errori globali sul lato server?

sobes.tech AI

Risposta dell'AI

Esistono diversi approcci comuni per catturare errori globali lato server:

  • Utilizzo dei meccanismi integrati dei framework/piattaforme: La maggior parte dei framework lato server (Node.js con Express, Python con Django/Flask, Ruby con Rails, ecc.) forniscono gestori di errori integrati.

    // Esempio per Express.js
    app.use((err, req, res, next) => {
      console.error(err.stack); // Registrazione dell'errore
      res.status(500).send('Qualcosa è andato storto!'); // Risposta al client
    });
    
    # Esempio per Flask
    @app.errorhandler(500)
    def internal_server_error(e):
        return "Qualcosa è andato storto!", 500
    
  • Cattura di eccezioni non gestite: In ambienti di esecuzione come Node.js, è possibile iscriversi a eventi globali come unhandledRejection e uncaughtException per catturare errori che altrimenti causerebbero il crash del processo.

    // Esempio per Node.js
    process.on('uncaughtException', (err) => {
      console.error('Eccezione non gestita:', err);
      // Qui si possono eseguire azioni come invio di notifiche o chiusura corretta
      process.exit(1); // Terminare con errore
    });
    
    process.on('unhandledRejection', (reason, promise) => {
      console.error('Rifiuto di promessa non gestito:', reason);
      // Qui si possono eseguire azioni come logging o invio di notifiche
    });
    
  • Logging centralizzato: Invio di informazioni dettagliate sugli errori a un sistema di logging centralizzato (ad esempio, ELK Stack, Sentry, Datadog) per analisi, notifiche e monitoraggio.

  • Utilizzo di middleware (per framework web): Creazione di middleware che avvolge l'elaborazione delle richieste e cattura errori interni.

  • Utilizzo di strumenti di monitoraggio: Uso di strumenti di monitoraggio delle prestazioni delle applicazioni (APM) come New Relic, Dynatrace o AppDynamics, che catturano e aggregano automaticamente le informazioni sugli errori.