ããã°ã©ãã³ã°å¶åŸ¡æ§é ãŸãšã
å¶åŸ¡æ§é (æ¡ä»¶åå²/ãããŒå¶åŸ¡)ãŸãšã.
èšèªå¥åè«
ðäŸå€åŠç(Exceptions)
ããã°ã©ã ãããåŠçãå®è¡ããŠããéäžã§,ãªãããã®ç°åžžãçºçããå Žåã«, çŸåšã®åŠçãäžæ (äžæ¢) ããŠ, å¥ã®åŠçãè¡ãããš. ãã®éã«çºçããç°åžžã®ããšãäŸå€ãšåŒã¶.
ãããã 2 ã€ã®æŠå¿µ.
- try: äŸå€ãã³ãã©ããã€äŸå€è£è¶³ã³ã³ãã¯ã¹ããçæ.
- raise: ãã£ãšãå éšã®äŸå€è£è¶³ã³ã³ããã¹ããž jamp ã, ããã«ããäŸå€ãã³ãã©ãèµ·å.
åã³ã³ããã¹ãã¯ã¹ã¿ãã¯ã§ç®¡çãã, try ã¯ã¹ã¿ãã¯ã® 1 ã€ã« marker ãã€ãã. raise 㯠marker ã«ãžã£ã³ãã㊠marker ã®å Žæã«äŸå€åŠçã®ã³ã³ããã¹ããæ¿å ¥ãã.(ref. CTMCP p93)
äŸå€ã®çš®é¡
- Asynchronous Exceptions: éåæäŸå€
- Synchronous Exceptions: åæäŸå€
- Traps: æå³çã« OS ãæ¢ãã breakpont, systemcall, file open
- Faults: ãªã«ããªå¯èœãªäŸå€, page fault, segmentation fault
- Aborts: ãªã«ããªäžå¯èœãªäŸå€, ããã°ã©ã ã¯åŒ·å¶çµäº.
ð¡äŸå€ããªããšæ»ãå€ãã§ãã¯ã§ãŠã³ã³ãŒã
äŸå€ãã€ãããªããš, ã³ã³ãã¯ã¹ãããšã®çµæãæ€èšŒå¿ èŠããã, return æ ãš case æãä¹±ç«ãããããã³ãŒããåºæ¥ã.
äŸãã°, äžäœã®ã³ã³ããã¹ã (A) ã§çºçãããšã©ãŒã¯, return -> return -> ããŠäžäœã§ãæ»ãå€ã®ãšã©ãŒãã§ãã¯ãå¿ èŠ.
#define ERROR -1
#define OK 0
int main (void) {
if (C ()==ERROR) {
printf ("Error\n");
}
}
int A () {
return ERROR;
}
int B () {
if (A () == ERROR) {
return ERROR;
}
else {
return OK;
}
}
int C () {
if (B () == ERROR) {
return ERROR;
}
else {
return OK;
}
}
ðæ€æ»äŸå€
æç€ºçã«äŸå€ãåŠçããåŠçããããªããšã³ã³ãã€ã«ãšã©ãŒããäŸå€.
ãã§ãã¯äŸå€, checked exceptionãšã.
äºåã«ã³ã³ãã€ã«ã§æ€æ»äŸå€ããã§ãã¯ããããšã¯åœåããã¢ã€ãã¢ãšæãããŠããã, ã³ãŒããè¥å€§åããŠã¡ã³ããã³ã¹ã®æéãããã, 人é¡ã¯æ¬¡ç¬¬ã«ãã®å®³æªã«æ°ã¥ãã.
Index
ðResultå
Result type.
ð颿°åããã°ã©ãã³ã°ã§ããçšãããããšã©ãŒãã³ããªã³ã°. Type-Safe Errorsãšã.
- æ»ãå€ãŸãã¯ãšã©ãŒã³ãŒããä¿æããã¢ããã£ãã¯å
- ããã¯ãäŸå€åŠçã«é Œããªããšã©ãŒåŠçã®æŽç·Žãããæ¹æ³ãæäŸãã
- 倱æããå¯èœæ§ã®ãã颿°ãResultåãè¿ãå Žåãããã°ã©ãã¯çµæã«ã¢ã¯ã»ã¹ããåã«ãçµæãæåã§ããã倱æã§ãããã確èªããããšã匷å¶ããããããã«ãããããã°ã©ãããšã©ãŒåŠçãå¿ããå¯èœæ§ãæé€ãããã
- ðRustã¯ãã¹ãŠäŸå€åŠçã¯ãããæ¡çšããããšã§æå.
<2025-03-10 Mon 16:07>
èšæ¶ãŠã¯Scalaã®å匷ããããšãã«ã¯ãããŠæ¥ããæŠå¿µ.