Sobes.tech
Middle

Kaip sekate ir stebite klaidas JavaScript?

sobes.tech AI

Atsakymas iš AI

Klaidų stebėjimas ir monitoravimas JavaScript'e vyksta šiais būdais:

  • Naršyklės konsolė: Pagrindinis įrankis klaidų derinimui kūrimo metu. Klaidos pranešimai (syntetiniai, loginiai, vykdymo metu) rodomi su failo ir eilutės nurodymais.

  • try...catch blokai: Gaudo vykdymo metu atsirandančias klaidas, leidžia jas apdoroti arba rodyti papildomą informaciją.

    try {
      // Kodas, kuris gali sukelti klaidą
      let result = riskyOperation();
    } catch (error) {
      // Klaidos apdorojimas
      console.error("Įvyko klaida:", error.message);
      // Klaidos siuntimas į serverį
      sendErrorToServer(error);
    }
    
  • window.onerror: Globalus JavaScript klaidų apdorotojas. Leidžia centralizuotai gaudyti klaidas, kurios "praeina" pro try...catch.

    window.onerror = function(message, source, lineno, colno, error) {
      console.error("Globali klaida:", message, source, lineno, colno);
      // Informacijos apie klaidą siuntimas į serverį
      sendErrorToServer({
        message: message,
        source: source,
        lineno: lineno,
        colno: colno,
        stack: error ? error.stack : 'N/A'
      });
      return true; // Grąžina true, kad užslopintų standartinį klaidos rodymą konsolėje
    };
    
  • unhandledrejection įvykis Promises: Gaudo neapdorotas klaidas.

    window.addEventListener('unhandledrejection', function(event) {
      console.error('Neapdorotas Promise atmetimas:', event.reason);
      // Informacijos apie klaidą siuntimas į serverį
      sendErrorToServer(event.reason);
    });
    
  • Klaidų stebėjimo sistemos (Sentry, Bugsnag, Rollbar): Profesionali paslauga, renka, sujungia ir analizuoja klaidas realiu laiku. Teikia stacktrace, naudotojo aplinkos informaciją, klaidų dažnumą ir pranešimus. Pagrindinis įrankis gamyboje.

  • Serverio logavimas: Klaidos, gaunamos frontende naudojant try...catch, onerror ar unhandledrejection, siunčiamos į serverį centralizuotam saugojimui ir analizei.

Pasirinkimas priklauso nuo kūrimo stadijos ir klaidos kritiškumo. Visada naudoju try...catch, globalius apdorotojus ir stebėjimo sistemų derinį.