Sobes.tech
Middle

Чӣ гуна хатогиҳоро дар JavaScript пайгирӣ ва назорат мекунӣ?

sobes.tech AI

Ҷавоб аз AI

JavaScript-те алдауларды мен келесі әдістермен қадағалап, бақылап отырамын:

  • Браузердің консольі: Дамыту кезеңінде негізгі құрал. Қате туралы хабарламалар (синтетикалық, логикалық, орындалу уақыты) файл мен жолды көрсетіп шығарылады.

  • try...catch блоктары: Орындау кезінде пайда болған қателерді ұстап алады, оларды өңдеуге немесе қосымша ақпарат шығаруға мүмкіндік береді.

    try {
      // Қате шығуы мүмкін код
      let result = riskyOperation();
    } catch (error) {
      // Қатені өңдеу
      console.error("Қате орын алды:", error.message);
      // Қатені серверге жіберуге болады
      sendErrorToServer(error);
    }
    
  • window.onerror: JavaScript-те өңделмеген қателер үшін глобалды өңдегіш. try...catch арқылы өтпеген қателерді орталықтандырылған түрде ұстауға мүмкіндік береді.

    window.onerror = function(message, source, lineno, colno, error) {
      console.error("Глобалды қате:", message, source, lineno, colno);
      // Қате туралы ақпаратты серверге жіберу
      sendErrorToServer({
        message: message,
        source: source,
        lineno: lineno,
        colno: colno,
        stack: error ? error.stack : 'N/A'
      });
      return true; // Стандартты қате көрсетуді болдырмау үшін true қайтару
    };
    
  • unhandledrejection оқиғасы Promises үшін: Өңделмеген қателерді ұстау.

    window.addEventListener('unhandledrejection', function(event) {
      console.error('Өңделмеген уәде қайтару:', event.reason);
      // Қате туралы ақпаратты серверге жіберу
      sendErrorToServer(event.reason);
    });
    
  • Қате бақылау жүйелері (Sentry, Bugsnag, Rollbar): Кәсіби қызметтер, олар қателерді нақты уақыт режимінде жинайды, біріктіреді және талдайды. Стекрейстер, пайдаланушы ортасы туралы ақпарат, қателер жиілігі және хабарландырулар ұсынады. Өндірісте негізгі құрал.

  • Сервердегі логтар: try...catch, onerror немесе unhandledrejection көмегімен фронтендте ұстаған қателер орталықтандырылған сақтау және талдау үшін серверге жіберіледі.

Әдіс таңдау даму кезеңіне және қателіктің маңыздығына байланысты. Өндірісте мен әрқашан try...catch, глобалды өңдегіштер және бақылау жүйелерінің комбинациясын қолданамын.