Finally or just the code?
2ã¤ã®ã³ã¼ãã®æçãæ¯è¼ãã¦ã¿ã¦ãã ããã
-
1ã¤ç®ã¯
try..catchã®ãã¨ã«ã³ã¼ããå®è¡ããããã«finallyã使ãã¾ã:try { work work } catch (e) { handle errors } finally { 使¥å ´æã®ã¯ãªã¼ã³ã¢ãã } -
2ã¤ç®ã¯
try..catchã®ç´å¾ã«ã¯ãªã¼ã³ã¢ããããå¦çãç½®ãã¾ã:try { work work } catch (e) { handle errors } 使¥å ´æã®ã¯ãªã¼ã³ã¢ãã
ç§ãã¡ã¯ãå¦çãéå§ãããå¾ã«ã¯ããããã¨ã©ã¼ãã©ããã¯é¢ä¿ãªãå¿ ãã¯ãªã¼ã³ã¢ãããå¿ è¦ã§ãã
finally ã使ããã¨ã®å©ç¹ã¯ããã§ããããï¼ããã¨ã両æ¹ã®ã³ã¼ãã¯åãã§ããããï¼ããå©ç¹ãããå ´åã¯ãããé¢ä¿ããä¾ãæãã¦ãã ããã
ãã®éãã¯ã颿°å ã®ã³ã¼ããè¦ãã¨æããã«ãªãã¾ãã
ãã try..catch ã® âé£ã³åºãâ ãããå ´åãæ¯ãèãã¯ç°ãªãã¾ãã
ä¾ãã°ãtry..catch ã®ä¸ã§ return ãããå ´åã§ããfinally å¥ã¯ try..catch ã ã©ã®ãããªçµããæ¹ã®å ´åã«ã§ã åä½ãã¾ãããã¨ããreturn æçµç±ã§ãããã
function f() {
try {
alert('start');
return "result";
} catch (e) {
/// ...
} finally {
alert('cleanup!');
}
}
f(); // cleanup!
â¦ãããã¯æ¬¡ã®ããã« throw ãããå ´å:
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!
ããã§ finally ã¯ã¯ãªã¼ã³ã¢ãããä¿è¨¼ãã¾ãããã f ã®çµããã«ã³ã¼ãããããå ´åã¯å®è¡ãããªãå ´åãããã¾ãã