Finally veya sadece kod?
AÅaÄıdaki iki kod parçacıÄını karÅılaÅtırınız.
-
İlki
finallyiletry...catchâden sonra kod çalıÅtırmaktadır:try { bir Åeyler çalıÅtır } catch (e) { hatalarla uÄraÅ } finally { temizlik yap } -
İkinci bölümde ise temizliÄi doÄrudan
try...catchsonrasında yap:try { bir Åeyler çalıÅtır } catch (e) { hatalarla uÄraÅ } temizlik yap
Bu temizlik olayını iÅ baÅladıktan sonra bir Åekilde hata olsa da olmasa da yapmamız gerekmekte.
Burada finally kullanılmasının bir anlamı var mı? Anlamı var ise bir örnek ile açıklayınız.
Bir fonksiyon içerisinden baktıÄımızda farklılıklar daha aÅikar olmakta.
âdıÅarı sıçraâ seçeneÄi olduÄunda try...catch davranıÅı daha farklı olmaktadır.
ÃrneÄin try...catch içerieinde bir return olduÄunda. try...catch bloÄunun sonunda her türlü finallyâe uÄramak zorunludur, bu return bile olsa.
function f() {
try {
alert('start');
return "result";
} catch (e) {
/// ...
} finally {
alert('cleanup!');
}
}
f(); // cleanup!
â¦Veya aÅaÄıdaki gibi throw varsa:
function f() {
try {
alert('start');
throw new Error("an error");
} catch (e) {
// ...
if("can't handle the error") {
throw e;
}
} finally {
alert('cleanup!')
}
}
f(); // cleanup!
Burada finally temizliÄin yapılacaÄının garantisini verir. EÄer temizlik kodunu fâin sonuna koyarsanız çalıÅmayabilir.