Sobes.tech
Middle+

Kako hvataš globalne greške na strani servera?

sobes.tech АИ

Одговор од АИ

Postoji nekoliko uobičajenih pristupa za hvatanje globalnih grešaka na strani servera:

  • Korišćenje ugrađenih mehanizama okvira/platformi: Većina server-side okvira (Node.js sa Express, Python sa Django/Flask, Ruby sa Rails itd.) pružaju ugrađene rukovaoce greškama.

    // Primer za Express.js
    app.use((err, req, res, next) => {
      console.error(err.stack); // Logovanje greške
      res.status(500).send('Nešto je pošlo po zlu!'); // Odgovor klijentu
    });
    
    # Primer za Flask
    @app.errorhandler(500)
    def internal_server_error(e):
        return "Nešto je pošlo po zlu!", 500
    
  • Hvatanje neobrađenih izuzetaka: U okruženjima za izvršavanje kao što je Node.js, možete se pretplatiti na globalne događaje poput unhandledRejection i uncaughtException da biste uhvatili greške koje bi inače dovele do pada procesa.

    // Primer za Node.js
    process.on('uncaughtException', (err) => {
      console.error('Neobrađeni izuzetak:', err);
      // Ovde možete izvršiti radnje poput slanja obaveštenja ili pravilnog zatvaranja
      process.exit(1); // Zatvaranje sa greškom
    });
    
    process.on('unhandledRejection', (reason, promise) => {
      console.error('Neobrađeno odricanje od obećanja:', reason);
      // Ovde možete izvršiti radnje poput logovanja ili slanja obaveštenja
    });
    
  • Centralizovano logovanje: Slanje detaljnih informacija o greškama u centralizovani sistem logovanja (npr. ELK Stack, Sentry, Datadog) za analizu, obaveštenja i nadzor.

  • Korišćenje middleware-a (za web okvire): Kreiranje middleware-a koji obuhvata obradu zahteva i hvata interne greške.

  • Korišćenje alata za nadzor: Korišćenje alata za nadzor performansi aplikacija (APM) poput New Relic, Dynatrace ili AppDynamics, koji automatski hvataju i agregiraju informacije o greškama.