Sobes.tech
Middle+

Hoe vang je globale fouten aan de serverzijde op?

sobes.tech AI

Antwoord van AI

Er zijn verschillende gangbare benaderingen om wereldwijde fouten aan de serverzijde op te vangen:

  • Gebruik van ingebouwde mechanismen van frameworks/platforms: De meeste server-side frameworks (Node.js met Express, Python met Django/Flask, Ruby met Rails, enz.) bieden ingebouwde foutafhandelingsmechanismen.

    // Voorbeeld voor Express.js
    app.use((err, req, res, next) => {
      console.error(err.stack); // Foutlog
      res.status(500).send('Er is iets misgegaan!'); // Reactie naar de client
    });
    
    # Voorbeeld voor Flask
    @app.errorhandler(500)
    def internal_server_error(e):
        return "Er is iets misgegaan!", 500
    
  • Vang onhandige uitzonderingen op: In runtime-omgevingen zoals Node.js, kun je je abonneren op globale gebeurtenissen zoals unhandledRejection en uncaughtException om fouten te vangen die anders tot het crashen van het proces zouden leiden.

    // Voorbeeld voor Node.js
    process.on('uncaughtException', (err) => {
      console.error('Onbehandelde uitzondering:', err);
      // Hier kunnen acties worden ondernomen zoals het verzenden van meldingen of correct afsluiten
      process.exit(1); // Afsluiten met fout
    });
    
    process.on('unhandledRejection', (reason, promise) => {
      console.error('Onbehandelde afwijzing van belofte:', reason);
      // Hier kunnen acties worden ondernomen zoals loggen of het verzenden van meldingen
    });
    
  • Gecentraliseerd loggen: Het verzenden van gedetailleerde foutinformatie naar een gecentraliseerd loggingsysteem (bijvoorbeeld ELK Stack, Sentry, Datadog) voor analyse, meldingen en monitoring.

  • Gebruik van middleware (voor web-frameworks): Het maken van middleware die de aanvraagverwerking omhult en interne fouten opvangt.

  • Gebruik van monitoringtools: Het gebruik van applicatieprestatiebewakingstools (APM) zoals New Relic, Dynatrace of AppDynamics, die automatisch foutinformatie opvangen en aggregeren.