JavaScriptã®try~catchæã§äŸå€åŠçãããæ¹æ³
try~catchæã¯JavaScriptã«ãããäŸå€åŠçãèšè¿°ã§ããŸããäŸå€åŠçãšã¯äœãªã®ãïŒã©ã®ãããªå Žé¢ã§äœ¿ãã®ãïŒãšãã£ãåºæ¬ã®ç¥èãããå®éã®èšè¿°æ¹æ³ãªã©ã«ã€ããŠãã³ãŒãã®å®äŸãšãšãã«äŸå€åŠçãåããŠåŠç¿ããåå¿è ã«ãããããããããã«è§£èª¬ããŠãããŸããããã°ã©ã ãå®è¡ããéã«ãšã©ãŒïŒäŸå€ïŒãèµ·ããããšããããŸããéåžžã¯ãšã©ãŒãèµ·ãã£ãéãããã§ããã°ã©ã ã¯æ¢ãŸããŸããããããå®éã®å Žé¢ã§ã¯ãšã©ãŒãèµ·ãã£ãŠãããã°ã©ã ã«æ¢ãŸã£ãŠæ¬²ãããªãå ŽåããããŸãããããªæã«äœ¿ããã®ãtry~catchæã§ãã
ä»åã¯JavaScriptã§ã®äŸå€åŠçã«å©çšãããtry~catchæã«ã€ããŠãæŠèŠãäœ¿ãæ¹ããããã°ã«äœ¿çšããæ¹æ³ãªã©ã«ã€ããŠè§£èª¬ããŠãããŸãã
JavaScriptã§äŸå€åŠçããããªãtry~catchæãšã¯
try~catchæã䜿ãããšã§ãäŸå€åŠçãèšè¿°ã§ããŸãã
äŸå€åŠçãšã¯ãäºæããŠããªãç°åžžã«ãããšã©ãŒïŒäŸå€ïŒãçºçããå Žé¢ã§æå³çã«ãšã©ãŒãåé¿ããããšã§ãã
äŸå€åŠçãèšè¿°ããããšã§ãäŸå€ã®çºçå Žé¢ã§ãããã°ã©ã ãã¹ããããããã«å¥ã®åŠçãå®è¡ãããããšãã§ããŸãã
JavaScriptã®try~catchæã®æžãæ¹
ããã§ã¯JavaScriptã«ãããtry~catchæã®æžãæ¹ã解説ããŠãããŸãã
try~catchæã¯ä»¥äžã®ããã«èšè¿°ããŸãã
try{
//äŸå€ãçºçããå¯èœæ§ã®ããåŠç
}catch(e){
//äŸå€ãçºçããå Žåã®åŠç
}
tryãããã¯å
ã«äŸå€ã®çºçããå¯èœæ§ãããåŠçãèšè¿°ããäŸå€ãçºçããå Žåã«ã¯catchãããã¯å
ã®åŠçãå®è¡ãããŸãã
catchãããã¯ã®åŒæ°ã«ã¯Errorãªããžã§ã¯ããæž¡ãããŸãã(Errorãªããžã§ã¯ãã«ã€ããŠã¯åŸè¿°ããŸãã)
ã§ã¯ãtry~catchæãå®éã«æžããŠã¿ãŸãã
try {
var greeting = "ããã«ã¡ã¯ã" + name + "ã§ãã";
console.log( greeting );
} catch(e) {
console.log( e.message );
}
ãã®ã³ãŒãã®å®è¡çµæã¯ä»¥äžã®éãã§ãã
name is not defined
ãã®ã³ãŒããå®è¡ãããšã倿°nameãå®çŸ©ãããŠããªããšããäŸå€ãçºçããŸããéåžžã¯ããã§åŠçãçµäºããŠããŸããŸãããtry~catchæãèšè¿°ããŠããããšã§catchãããã¯å ã®åŠçãå®è¡ãããŸããErrorãªããžã§ã¯ãã®messageããããã£ã䜿ããšãšã©ãŒã¡ãã»ãŒãžãååŸã§ããŸãã
throwæã§äŸå€ãçºçããã
throwæã䜿ãããšã§ããªãªãžãã«ã®äŸå€ãå®çŸ©ããããšãã§ããŸããäŸãã°ã以äžã®ã³ãŒããèŠãŠãã ããã
var num = "RED";
try {
if(num.search(/^[-]?[0-9]+$/) === -1){
throw new Error('倿°numã«ã¯æŽæ°ãå
¥ããŠãã ãã')
}
var like = "奜ããªæ°åã¯ã" + num + "ã§ãã";
console.log( like );
} catch(e) {
console.error( "ãšã©ãŒïŒ", e.message );
}
ãã®ã³ãŒãã§ã¯ã倿°numã«æ°å€ä»¥å€ã®å€ãå ¥ã£ãŠããå Žåã«throwæã䜿ã£ãŠäŸå€ãçºçãããŠããŸãã
throwæã§æåéãcatchãããã¯ã«Errorãªããžã§ã¯ããæããŠããã®ã§ããthrowæãå®è¡ããããšå³åº§ã«catchãããã¯ã®åŠçã«ç§»ããŸããErrorãªããžã§ã¯ãã®ã³ã³ã¹ãã©ã¯ã¿ã«ã¯ãšã©ãŒã¡ãã»ãŒãžãæãããããšãå¯èœã§ãã
Errorãªããžã§ã¯ããšã¯
Errorãªããžã§ã¯ãã¯ãšã©ãŒæ å ±ãåºåããéã«äœ¿ããããªããžã§ã¯ãã§ããšã©ãŒã®çš®é¡ã«ãã£ãŠããã€ãã®ãªããžã§ã¯ããçšæãããŠããŸãã
代衚çãªãã®ãããã€ã玹ä»ããŸãã
- Errorãäžè¬çãªãšã©ãŒå šè¬
- RangeErrorãæ°å€ãæå¹ç¯å²å€ã®å Žåã®ãšã©ãŒ
- ReferenceErrorã宣èšãããŠããªã倿°ã®ãšã©ãŒ
- SyntaxErrorãææ³ãšã©ãŒ
- TypeErrorãæ³å®ãããããŒã¿åã§ãªãå Žåã®ãšã©ãŒ
throwæãªã©ã§äŸå€ã®çš®é¡ã«ãã£ãŠãªããžã§ã¯ãã䜿ãåãããšãã©ã®ãããªãšã©ãŒãèµ·ãã£ããããããããããªããããã°ã«ã䟿å©ã§ãã
以äžã®ã³ãŒãã§ã¯2çš®é¡ã®throwæã§ããããå¥ã®Errorãªããžã§ã¯ããæããŠããŸãã
var num = "14";
try {
if(num.search(/^[-]?[0-9]+$/) === -1){
throw new TypeError('倿°numã«ã¯æŽæ°ãå
¥ããŠãã ãã')
}
if(num > 12){
throw new RangeError('倿°numã«ã¯12以äžã®æŽæ°ãå
¥ããŠãã ãã')
}
var birthday = "èªçæ¥ã¯" + num + "æã§ãã";
console.log( birthday );
} catch(e) {
console.error( e.name, e.message );
}
finallyæã§äŸå€çºçåŸã®åŠçãèšè¿°ãã
try~catchæã§ã¯ãäŸå€ãçºçããå Žåã«ã¯å³åº§ã«catchãããã¯ã®äŸå€åŠçã«ç§»ããããäŸå€çºçåæä»¥éã®éåžžåŠçã¯å®è¡ãããŸãããäŸãã°ãã¡ã¢ãªã®éæŸåŠçãããŒã¿ããŒã¹ã®ã³ãã¯ã·ã§ã³è§£é€åŠçãªã©ãšãã£ããäŸå€ã®çºçã®æç¡ã«ãããããå¿ ãå®è¡ããããåŠçãããå Žåã«ã¯finallyæã䜿çšããŸãã
finallyæã¯ä»¥äžã®ããã«èšè¿°ããŸãã
try {
//äŸå€ãçºçããå Žåã®åŠç
} catch (e) {
//äŸå€ãçºçããå Žåã®åŠç
} finally {
//å¿
ãå®è¡ãããåŠç
}
finallyãããã¯å ã«èšè¿°ããåŠçã¯äŸå€çºçã®æç¡ã«ãããããå¿ ãå®è¡ãããŸãã
try~catchããããã°ã«äœ¿ã
Errorãªããžã§ã¯ãã®é ã§ãå°ãè§ŠããŸããããtry~catchæã¯ãããã°ã®éã«ãšãŠãæçšã§ããErrorãªããžã§ã¯ãã«ã¯ãšã©ãŒçºçåæã®ç¹å®ãªã©ã«äœ¿ããããããã£ãçšæãããŠããŸãã
stackããããã£ã§ãšã©ãŒçºçåæãèŠã€ãã
Errorãªããžã§ã¯ãã®stackããããã£ã䜿ãããšã§äŸå€ãçºçãã颿°ãšè¡çªå·ãªã©ã®è©³çްãåºåãããŸãã
以äžã®ã³ãŒããå®è¡ããŠã¿ããšã颿°birthdayShowã§äŸå€ãçºçããããšãããããŸãã
var num = "14";
try {
birthdayShow(num);
} catch(e) {
console.error( e.stack);
}
function birthdayShow(month){
if(month.search(/^[-]?[0-9]+$/) === -1){
throw new TypeError('倿°numã«ã¯æŽæ°ãå
¥ããŠãã ãã')
}
if(month > 12){
throw new RangeError('倿°numã«ã¯12以äžã®æŽæ°ãå
¥ããŠãã ãã')
}
var birthday = "èªçæ¥ã¯" + month + "æã§ãã";
console.log( birthday );
}
ãŸãšã
ä»åã¯JavaScriptã«ãããäŸå€åŠçã§ããtry~catchæã«ã€ããŠè§£èª¬ããŠããŸããããããŸã§ã®ãã€ã³ãããŸãšãããšä»¥äžã®éãã§ãã
- try~catchæãæžãããšã§ãšã©ãŒçºçæã«ãåŠçãã¹ãããããªã
- tryãããã¯å ã«éåžžåŠçãcatchãããã¯å ã«äŸå€åŠçãèšè¿°
- throwæã§ãŠãŒã¶ãŒå®çŸ©ã®äŸå€åŠçãèšè¿°å¯èœ
- finallyæã§å¿ ãå®è¡ãããåŠçãèšè¿°å¯èœ
- try~catchæã§å¹ççã«ãããã°ãããã
äŸå€åŠçã䜿ãããªããŠJavaScriptã®ããã°ã©ã ãããã«å¹ççã«æžããŠãããŸãããã













