Finally Ñи пÑоÑÑо код?
ÐоÑÑвнÑйÑе два ÑÑагменÑи кодÑ.
-
РпеÑÑÐ¾Ð¼Ñ Ð²Ð¸ÐºÐ¾ÑиÑÑовÑÑÑÑÑÑ
finallyÐ´Ð»Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÐºÐ¾Ð´Ñ Ð¿ÑÑлÑtry...catch:try { Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÐºÐ¾Ð´Ñ } catch (err) { обÑобка помилок } finally { оÑиÑÐµÐ½Ð½Ñ ÑеÑÑÑÑÑв } -
РдÑÑÐ³Ð¾Ð¼Ñ ÐºÐ¾Ð´Ñ Ð¾ÑиÑÐµÐ½Ð½Ñ Ð²ÑдбÑваÑÑÑÑÑ Ð¾Ð´ÑÐ°Ð·Ñ Ð¿ÑÑлÑ
try...catch:try { Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÐºÐ¾Ð´Ñ } catch (err) { обÑобка помилок } оÑиÑÐµÐ½Ð½Ñ ÑеÑÑÑÑÑв
ÐÑиÑÐµÐ½Ð½Ñ ÑеÑÑÑÑÑв поÑÑÑбно виконаÑи пÑÑÐ»Ñ ÑобоÑи не залежно вÑд наÑвноÑÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸.
Чи Ñ ÑкÑйÑÑ Ð¿ÐµÑеваги викоÑиÑÑÐ°Ð½Ð½Ñ finally, Ñи обидва ÑÑагменÑи ÐºÐ¾Ð´Ñ Ð¾Ð´Ð½Ð°ÐºÐ¾Ð²Ñ? ЯкÑо Ñ ÑÑзниÑÑ â наведÑÑÑ Ð¿Ñиклади викоÑиÑÑаннÑ.
Ð ÑзниÑÑ ÑÑÐ°Ñ Ð¾ÑевидноÑ, ÑкÑо ми подивимоÑÑ Ð½Ð° код вÑеÑÐµÐ´Ð¸Ð½Ñ ÑÑнкÑÑÑ.
ÐоведÑнка вÑдÑÑзнÑÑимеÑÑÑÑ, ÑкÑо код «ÑапÑово вийде» з Ð±Ð»Ð¾ÐºÑ try...catch.
ÐапÑиклад, ÑкÑо вÑеÑÐµÐ´Ð¸Ð½Ñ try...catch Ñ return. Ðлок finally ÑпÑаÑÑÑ Ð´Ð»Ñ âбÑдÑ-Ñкогоâ виÑ
Ð¾Ð´Ñ Ð· try...catch, навÑÑÑ Ð·Ð° Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾Ñ return â одÑÐ°Ð·Ñ Ð¿ÑÑÐ»Ñ Ð²Ð¸Ñ
Ð¾Ð´Ñ Ð· Ð±Ð»Ð¾ÐºÑ try...catch, але пеÑед пеÑедаÑÐµÑ ÐºÐ¾Ð½ÑÑÐ¾Ð»Ñ ÐºÐ¾Ð´Ð¾Ð²Ñ, Ñо викликав ÑÑ ÑÑнкÑÑÑ.
function f() {
try {
alert('поÑаÑок');
return "ÑезÑлÑÑаÑ";
} catch (err) {
/// ...
} finally {
alert('оÑиÑеннÑ!');
}
}
f(); // оÑиÑеннÑ!
â¦Ðбо ÑкÑо Ñ throw:
function f() {
try {
alert('поÑаÑок');
throw new Error("помилка");
} catch (err) {
// ...
if("не Ð¼Ð¾Ð¶Ñ Ð¾Ð±ÑобиÑи помилкÑ") {
throw err;
}
} finally {
alert('оÑиÑеннÑ!')
}
}
f(); // оÑиÑеннÑ!
finally гаÑанÑÑÑ Ð¾ÑиÑеннÑ. ÐÑиÑÐµÐ½Ð½Ñ Ð½Ðµ ÑпÑаÑÑÑ, ÑкÑо ми пÑоÑÑо додамо код в кÑнÑÑ ÑÑнкÑÑÑ f.