Finally yoki faqat kodmi?
Ikkala kod fragmentlarini solishtiring.
-
Birinchisi,
try..catchdan soâng kodni bajarish uchunfinallydan foydalanadi:try { work work } catch (err) { handle errors } finally { cleanup the working space } -
Ikkinchi fragment tozalashni darhol
try..catchdan soâng qoâyadi:try { work work } catch (err) { handle errors } cleanup the working space
Ish boshlangandan soâng, albatta, bizga tozalash kerak, xato bor yoki yoâqligi muhim emas.
Bu erda finally dan foydalanishning afzalligi bormi yoki ikkala kod fragmenti tengmi? Agar bunday ustunlik boâlsa misol keltiring.
Agar funktsiya ichidagi kodni koârib chiqsak, farq aniq boâladi.
Agar try..catch dan âsakrabâ chiqsa, xatti-harakatlar boshqacha boâladi.
Masalan, return try..catch ichida mavjud boâlganda. finally bandi try..catch dan har qanday chiqish holatida, hatto return ifodasi orqali ishlaydi: try..catch tugashi bilanoq, lekin chaqiruv kodidan oldin boshqaruvni oladi.
function f() {
try {
alert('start');
return "result";
} catch (err) {
/// ...
} finally {
alert('cleanup!');
}
}
f(); // cleanup!
â¦Yoki throw boâlganida, bu yerda boâlgani kabi:
function f() {
try {
alert('start');
throw new Error("xato");
} catch (e) {
// ...
if("xatoni bartaraf eta olmaydi") {
throw err;
}
} finally {
alert('cleanup!')
}
}
f(); // cleanup!
Bu yerda tozalashni kafolatlaydigan finally ifodasi. Agar biz kodni f ning oxiriga qoâysak, u ishlamaydi.