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
, finally
və throw
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:
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:
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:
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:
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:
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:
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
, finally
və throw
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.
GO TO FULL VERSION