CodeGym /Kurslar /Frontend SELF AZ /İstisnaların emalı

İstisnaların emalı

Frontend SELF AZ
Səviyyə , Dərs
Mövcuddur

10.1 Try...catch bloku

İstisnaların emalı proqramlaşdırmada mühüm bir aspektdir, bu da kodun dayanıqlığını və etibarlılığını artırmağa kömək edir. JavaScript-də istisnaların emalı üçün try, catch, finallythrow açar sözlərindən istifadə olunur. Bu dərsdə biz bu açar sözləri, onların sintaksisini və istifadə nümunələrini nəzərdən keçirəcəyik.

1. Try...catch bloku

try...catch konstruksiyası try bölməsində baş verən səhvləri emal etmək üçün istifadə olunur. Əgər try blokunda bir səhv baş verərsə, idarəetmə catch blokuna ötürülür, burada səhv emal edilə bilər.

Sintaksis:

    
      try {
        // İstisna yarada biləcək kod
      } catch (error) {
        // İstisnanı emal etmək üçün kod
      }
    
  

Bu nümunədə, baxmayaraq ki, JavaScript-də sıfıra bölmə bir səhv yaratmır, əgər bu başqa bir səhv (məsələn, müəyyən edilməmiş bir dəyişənə giriş) olsaydı, catch bloku onu emal edə bilərdi:

JavaScript
    
      try {
        let result = 10 / 0;

        console.log(result);

      } catch (error) {
        console.error('Bir səhv baş verdi:', error);
      }
    
  

10.2. finally bloku

finally bloku, try blokunda istisna yaranıb-yaranmadığından asılı olmayaraq yerinə yetirilməli olan kodun icrası üçün istifadə olunur. finally bloku catch blokunun ardınca gəlir.

Sintaksis:

    
      try {
        // İstisna yarada biləcək kod
      } catch (error) {
        // İstisnanı işləmək üçün kod
      } finally {
        // Hər halda icra olunacaq kod
      }
    
  

Bu nümunədə Bu kod həmişə işləyəcək. mesajı, xəta baş verib-verməməsindən asılı olmayaraq çıxarılacaq:

JavaScript
    
      try {
        let result = 10 / 0;
        console.log(result);
      } catch (error) {
        console.error('Bir xəta baş verdi:', error);
      } finally {
        console.log('Bu kod həmişə işləyəcək.');
      }
    
  

10. 3. throw operatoru

throw operatoru istisna hallarını açıq şəkildə atmaq üçün istifadə olunur. Onunla istifadəçi səhvlərini atmaq mümkündür.

Sintaksis:

    
      throw expression;
    
  

Burada:

  • expression: istisna halı olaraq atılacaq hər hansı ifadə və ya obyekt

İstifadə nümunəsi

Bu nümunədə, sıfıra bölməyə cəhd edildikdə səhv atılır və catch bloku bu səhvi emal edir:

JavaScript
    
      function divide(a, b) {
        if (b === 0) {
          throw new Error('Sıfıra bölmə icazəli deyil.');
        }
        return a / b;
      }

      try {
        let result = divide(10, 0);
        console.log(result);
      } catch (error) {
        console.error('Xəta baş verdi:', error.message);
      }
    
  

10.4 Genişləndirilmiş Nümunələr və İstifadə

Nümunə 1: Çoxsaylı istisnalar

Bəzən try blokunda müxtəlif növ səhvlər meydana gələ bilər. Bunları müxtəlif şəkildə idarə edə bilərsiniz, error obyektinin xüsusiyyətlərindən istifadə edərək.

Bu nümunədə biz JSON sintaksis səhvini digər mümkün səhvlərdən ayrıca idarə edirik:

JavaScript
    
      try {
        JSON.parse('{ malformed JSON string }');
      } catch (error) {
        if (error instanceof SyntaxError) {
          console.error('JSON Sintaks Səhvi:', error.message);
        } else {
          console.error('Gözlənilməz Səhv:', error);
        }
      } finally {
        console.log('Parçalama cəhdi tamamlandı.');
      }
    
  

Nümunə 2: Daxili try...catch blokları

Daha dəqiq səhv idarəsi üçün daxili try...catch bloklarından istifadə etmək olar.

Bu nümunədə, try blokunda yaranan səhv daxili catch bloku tərəfindən idarə olunur, daha sonra isə xarici catch bloku tərəfindən idarə olunmaq üçün təkrarən atılır:

JavaScript
    
      try {
        try {
          let result = divide(10, 0);
          console.log(result);
        } catch (innerError) {
          console.error('Daxili catch:', innerError.message);
          throw innerError;
        }
      } catch (outerError) {
        console.error('Xarici catch:', outerError.message);
      } finally {
        console.log('Daxili try...catch tamamlandı.');
      }

      function divide(a, b) {
        if (b === 0) {
          throw new Error('Zero ilə bölmə icazəsizdir.');
        }
        return a / b;
      }
    
  

Nümunə 3: finally istifadəsi ilə resursların sərbəst buraxılması

finally bloku faylları bağlamaq və ya şəbəkə əlaqələrini sona çatdırmaq kimi resursların sərbəst buraxılması üçün faydalıdır.

Bu nümunədə, fayl, oxuma zamanı səhv baş verib-verməməsindən asılı olmayaraq, həmişə bağlanacaq:

JavaScript
    
      function readFile(filePath) {
        let file;
        try {
          file = openFile(filePath); // Faylı açan funksiya
          // Fayl ilə iş
        } catch (error) {
          console.error('Fayl oxunmasında səhv:', error.message);
        } finally {
          if (file) {
            closeFile(file); // Faylı bağlayan funksiya
          }
          console.log('Fayl işləmə tamamlandı.');
        }
      }

      function openFile(path) {
        // Fayl açma məntiqi
      }

      function closeFile(file) {
        // Fayl bağlama məntiqi
      }

      readFile('path/to/file.txt');
    
  

try, catch, finallythrow istifadə edərək JavaScript-də istisnaların təkmilləşdirilməsi daha etibarlı və dayanıqlı tətbiqlər hazırlamağa imkan verir. Bu konstruksiyaların düzgün başa düşülməsi və istifadəsi səhvlərin idarə edilməsinə, resursların sərbəst buraxılmasına və istifadəçi təcrübəsinin yaxşılaşdırılmasına kömək edir.

1
Опрос
Obyektlər,  36 уровень,  4 лекция
недоступен
Obyektlər
Obyektlər
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION