Sobes.tech
Middle+

Kaip gaunate globalias klaidas serverio pusėje?

sobes.tech AI

Atsakymas iš AI

Yra keletas dažniausiai naudojamų būdų gaudyti globalias klaidas serverio pusėje:

  • Naudoti karkasų / platformų įmontuotus mechanizmus: Dauguma serverinių karkasų (Node.js su Express, Python su Django/Flask, Ruby su Rails ir kt.) teikia įmontuotus klaidų tvarkytojus.

    // Pavyzdys Express.js
    app.use((err, req, res, next) => {
      console.error(err.stack); // Klaidos registravimas
      res.status(500).send('Kažkas nutiko!'); // Atsakymas klientui
    });
    
    # Pavyzdys Flask
    @app.errorhandler(500)
    def internal_server_error(e):
        return "Kažkas nutiko!", 500
    
  • Neapdorotų išimčių gaudymas: Node.js veikimo aplinkose galima prenumeruoti globalius įvykius, tokius kaip unhandledRejection ir uncaughtException, kad gaudytų klaidas, kurios kitaip sukeltų proceso žlugimą.

    // Pavyzdys Node.js
    process.on('uncaughtException', (err) => {
      console.error('Neapdorota išimtis:', err);
      // Čia galima atlikti veiksmus, pvz., siųsti pranešimą ar tinkamai užbaigti
      process.exit(1); // Baigti su klaida
    });
    
    process.on('unhandledRejection', (reason, promise) => {
      console.error('Neapdorotas atmetimas:', reason);
      // Čia galima atlikti veiksmus, pvz., registruoti ar siųsti pranešimą
    });
    
  • Centralizuotas registravimas: Detalių klaidų informacijos siuntimas į centralizuotą registravimo sistemą (pvz., ELK Stack, Sentry, Datadog) analizei, įspėjimams ir stebėjimui.

  • Middleware naudojimas: Sukurkite tarpinį programą, kuri apgaubia užklausų apdorojimą ir gaudo viduje atsirandančias klaidas.

  • Stebėjimo mechanizmų naudojimas: Naudokite našumo stebėjimo įrankius (APM), pvz., New Relic, Dynatrace ar AppDynamics, kurie automatiškai gaudo ir kaupia klaidų informaciją.