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
unhandledRejectioniuncaughtExceptionda 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.