ð± åºæïŒããªãã®Webãµã€ããçªç¶ããªãŒãºããææâŠ
ååã®èšäºã§ãfetchã䜿ã£ãŠå€éšAPIããããŒã¿ãååŸããæ¹æ³ããã¹ã¿ãŒããŸãããïŒããã§ããªãã®Webãµã€ãã¯äžçãšç¹ãããŸãããããããããã§äžã€ã**絶察ã«èŠéãããªããèœãšã穎ã**ããããŸãã
ããã¯ãããšã©ãŒãã§ãã
- ð ãŠãŒã¶ãŒã®Wi-FiãåãããïŒ
- ð£ APIãµãŒããŒãçªç¶ããŠã³ãããïŒ
- ð¡ ååŸããããŒã¿åœ¢åŒãæ¥ã«å€ãã£ããïŒ
ã©ããªã«å®ç§ãªã³ãŒããæžããŠããå€éšã®èŠå ã§ããã°ã©ã ã¯ç°¡åã«ã¯ã©ãã·ã¥ããŸãããããŠãããã°ã©ã ãã¯ã©ãã·ã¥ãããšãWebãµã€ãã¯çªç¶ããªãŒãºãããŠãŒã¶ãŒã¯ããã®ãµã€ããå£ããŠãâŠããšæããŠé¢è±ããŠããŸããŸãã
ããã®ãšã³ãžãã¢ãšåå¿è ã®æå€§ã®éãã¯ã**ããšã©ãŒãæããªãããšãã§ã¯ãªããããšã©ãŒãèµ·ããŠããµã€ãã絶察ã«ããªãŒãºãããªãä»çµã¿ã**ãç¥ã£ãŠãããã©ããã§ãã
ãã®ã絶察å®å
šããŸããªãããããããšã©ãŒãã³ããªã³ã°ïŒäŸå€åŠçïŒãç¹ã«**try...catch**æ§æã§ãïŒ
1. ðš ãªããšã©ãŒãã³ããªã³ã°ãå¿ èŠãªã®ãïŒ
JavaScriptã®ããã°ã©ã ã¯ããšã©ãŒãçºçãããšåºæ¬çã«ãã®å Žã§å®è¡ã忢ããŸãã
ïŒâ ãšã©ãŒãã³ããªã³ã°ããªãå ŽåïŒ
JavaScript
console.log("â åŠçéå§");
throw new Error("ð¥ æå³çã«ãšã©ãŒãçºçïŒ"); // ããã§åæ¢
console.log("â¡ åŠçç¶è¡"); // â å®è¡ãããªã
Webãµã€ãã§ã¯ããã®ãå®è¡åæ¢ãããããªãŒãºããæå³ããŸãããšã©ãŒãçºçãããšããããã°ã©ã å šäœãæ¢ããã«ãããã®éšåã®åŠçã ããã¹ãããããŠã次ã®åŠçã«ç§»ããããã®ã«ãŒã«ãå¿ èŠãªã®ã§ãã
2. ð¡ïž 絶察å®å šã®ä»çµã¿ïŒtry...catchæ§æ
try...catchæ§æã¯ããšã©ãŒãçºçããå¯èœæ§ã®ããã³ãŒãã**ãç£èŠããããšã©ãŒãçºçãããããã°ã©ã ãæ¢ããã«ãå¥ã®åŠçã«åãæ¿ããã**ããã®ä»çµã¿ã§ãã
| ããŒã¯ãŒã | åœ¹å² |
try | ãšã©ãŒãçºçããå¯èœæ§ãããã³ãŒããå²ãç£èŠãããã¯ã |
catch | tryãããã¯å
ã§ãšã©ãŒãçºçãããšãã«å®è¡ãããã³ãŒãã |
Google ã¹ãã¬ããã·ãŒãã«ãšã¯ã¹ããŒã
try...catchã®æ§é ãšæµã
JavaScript
console.log("â åŠçéå§");
try {
// ç£èŠå¯Ÿè±¡ã³ãŒã
console.log("â¡ APIéä¿¡ã詊ã¿ãŸã");
// æå³çã«ãšã©ãŒãçºçãããïŒãŸãã¯fetchã倱æããïŒ
// throw new Error("ãµãŒããŒãå¿çããŸããã§ãã");
console.log("⢠æåããŸãã"); // ãšã©ãŒãèµ·ããªããã°å®è¡
} catch (error) {
// catchãããã¯ã«ã¯ãšã©ãŒãªããžã§ã¯ããæž¡ããã
console.log("ð¥ ãšã©ãŒãæ€ç¥ããŸããïŒ");
console.error("ãšã©ãŒå
容:", error.message);
// ãŠãŒã¶ãŒã«ãããŒã¿ã衚瀺ã§ããŸããã§ããããšåªããäŒããDOMæäœãªã©ãè¡ã
}
console.log("⣠ããã°ã©ã ã¯ããªãŒãºããã«ç¶è¡ïŒ");
å®è¡ã®æµãïŒ
tryå ã®ã³ãŒããå®è¡ããŸãã- ããéäžã§ãšã©ãŒãçºçããå Žåã
tryå ã®æ®ãã®ã³ãŒããã¹ãããããŸãã - ããã«
catchãããã¯ã«ãžã£ã³ããããšã©ãŒåŠçã®ã³ãŒããå®è¡ããŸãã catchãããã¯ãçµãããšãæ§æã®å€ã®ã³ãŒãïŒâ£ïŒã«ç§»åããåŠçãç¶è¡ããŸãã
ãã®ä»çµã¿ã®ãããã§ãWebãµã€ãã¯ãšã©ãŒã§ããªãŒãºããããšãªãããŠãŒã¶ãŒã«ãä»ãåé¡ãèµ·ããŠããŸãããšäŒããã¡ãã»ãŒãžïŒåªãããšã©ãŒãã³ããªã³ã°ïŒã衚瀺ã§ããããã«ãªãã®ã§ãïŒ
3. ð éåæåŠçã§ã®å®è·µïŒasync/awaitãštry...catch
ååã®èšäºã§åŠãã async/awaitãšããã®try...catchã¯æé«ã®ã³ã³ãã§ããasync/awaitã䜿ã£ãŠããå Žåãtry...catchã¯fetchã®ãããã¯ãŒã¯ãšã©ãŒããawaitããŠããPromiseãrejectïŒæåŠïŒããããšã©ãŒãå
šãŠãã£ããããŠãããŸãã
JavaScript
async function loadDataSafely() {
const API_URL = 'https://api-down.com/data'; // ð¥ 倱æããURL
try {
// awaitã§Promiseã®å®äºãç£èŠ
const response = await fetch(API_URL);
// HTTPã¹ããŒã¿ã¹ã³ãŒãã®ãšã©ãŒãèªåã§ãã§ãã¯ïŒ404, 500ãªã©ïŒ
if (!response.ok) {
throw new Error(`HTTPãšã©ãŒãçºçããŸãã: ${response.status}`);
}
const data = await response.json();
document.getElementById('content').textContent = data.message;
} catch (error) {
// ãããã¯ãŒã¯ãšã©ãŒãJSONããŒã¹ãšã©ãŒãæåã§throwãããšã©ãŒãå
šãŠãã£ãã
console.error("ããŒã¿ååŸã®é倧ãªåé¡:", error.message);
// ããã§ãšã©ãŒã¡ãã»ãŒãžãDOMã«è¡šç€ºïŒ
document.getElementById('content').textContent = 'â ïž ããŒã¿ååŸã«å€±æãæéããããŠã詊ããã ããã';
}
}
loadDataSafely();
try...catchã§å
šäœãå²ãã ãã§ãããªãã®ã³ãŒãã¯**ãã©ããªç¶æ³ã§ããŠãŒã¶ãŒäœéšãå®ãæãã**ããã仿§ã®ã³ãŒãã«çãŸãå€ããã®ã§ãïŒ
ð ãŸãšãïŒãšã©ãŒãã³ããªã³ã°ã§ããºããµã€ãã«ïŒ
ãšã©ãŒãã³ããªã³ã°ã¯å°å³ãªäœæ¥ã«èŠãããããããŸãããããŠãŒã¶ãŒããã®ä¿¡é Œãåã¡åãããã®æéèŠã¹ãã«ã§ãã
try...catchïŒãšã©ãŒãæ€ç¥ããããã°ã©ã ã®ããªãŒãºãé²ããé²åŸ¡ã·ãŒã«ãããcatchãããã¯ïŒãšã©ãŒçºçæã«ããŠãŒã¶ãŒã«åªããç¶æ³ãäŒããããã®ãã¡ãã»ãŒãžã»ã³ã¿ãŒããasync/awaitãšã®çµã¿åããïŒéåæåŠçã®ããšã©ãŒãäžç¶²æå°œã«ããæåŒ·ã³ã³ãã
仿¥ãããããªããæžããã¹ãŠã®fetchãawaitã®åŠçãããã®try...catchã§åªããå
ãã§ãããŸããããããªãã®ã³ãŒããã絶察å®å
šãã«ãªãããšã§ããŠãŒã¶ãŒã¯å®å¿ããŠãµã€ããå©çšã§ããçµæãšããŠããªãã®Webãµã€ãã¯ããºãä¿¡é Œæ§ãæã«å
¥ããã¯ãã§ãïŒæ¬¡ã®ã¹ããããå
šåã§å¿æŽããŠããŸãïŒ

