Next: Examples of Catch, Previous: Nonlocal Exits, Up: Nonlocal Exits [Contents][Index]
catch
¤Èthrow
¤Û¤È¤ó¤É¤ÎÀ©¸æ¹½Â¤¤Ï¡¢¤½¤Î¹½Â¤Æâ¤Ç¤ÎÀ©¸æ¤Îή¤ì¤À¤±¤Ë±Æ¶Á¤·¤Þ¤¹¡£
´Ø¿ôthrow
¤Ï¡¢Ä̾ï¤Î¥×¥í¥°¥é¥à¼Â¹Ô¤Î¤³¤Î¤è¤¦¤Êµ¬Â§¤ÎÎã³°¤Ç¤¹¡£
¤Ä¤Þ¤ê¡¢Í×µá¤Ë½¾¤Ã¤ÆÈó¥í¡¼¥«¥ë¤Êæ½Ð¤ò¹Ô¤¤¤Þ¤¹¡£
¡Ê¤Û¤«¤Ë¤âÎã³°¤Ï¤¢¤ë¤¬¡¢¤½¤ì¤é¤Ï¥¨¥é¡¼½èÍý¤Î¤¿¤á¤À¤±¤Ç¤¢¤ë¡£¡Ë
throw
¤Ïcatch
¤ÎÆâ¦¤Ç»È¤¤¡¢
¤½¤Îcatch
¤ØÌá¤ê¤Þ¤¹¡£
(defun foo-outer () (catch 'foo (foo-inner))) (defun foo-inner () … (if x (throw 'foo t)) …)
¥Õ¥©¡¼¥àthrow
¤ò¼Â¹Ô¤¹¤ë¤È¡¢Âбþ¤¹¤ëcatch
¤ØÀ©¸æ¤¬Ìá¤ê¡¢
¤½¤Îcatch
¤Ï¤¿¤À¤Á¤Ë½ªÎ»¤·¤Þ¤¹¡£
throw
¤Ë³¤¯¥³¡¼¥É¤Ï¼Â¹Ô¤µ¤ì¤Þ¤»¤ó¡£
throw
¤ÎÂè2°ú¿ô¤Ï¡¢catch
¤ÎÌá¤êÃͤȤ·¤Æ»È¤ï¤ì¤Þ¤¹¡£
´Ø¿ôthrow
¤Ï¡¢¤½¤ÎÂè1°ú¿ô¤Ë´ð¤Å¤¤¤ÆÂбþ¤¹¤ëcatch
¤òõ¤·¤Þ¤¹¡£
¤Ä¤Þ¤ê¡¢catch
¤ÎÂè1°ú¿ô¤¬
throw
¤Ë»ØÄꤵ¤ì¤¿¤â¤Î¤Ëeq
¤Ç¤¢¤ëcatch
¤òõ¤·¤Þ¤¹¡£
¤½¤Î¤è¤¦¤Êcatch
¤¬Ê£¿ô¸Ä¤¢¤ë¾ì¹ç¤Ë¤Ï¡¢
¤â¤Ã¤È¤âÆâ¦¤Î¤â¤Î¤òÍ¥À褷¤Þ¤¹¡£
¤·¤¿¤¬¤Ã¤Æ¡¢¾å¤ÎÎã¤Ç¤Ï¡¢throw
¤Ïfoo
¤ò»ØÄꤷ¡¢
foo-outer
¤Îcatch
¤ÏƱ¤¸¥·¥ó¥Ü¥ë¤ò»ØÄꤷ¤Æ¤¤¤ë¤Î¤Ç¡¢
¤½¤Îcatch
¤ò»È¤¤¤Þ¤¹
¡Ê¤¿¤À¤·¡¢¤³¤ì¤é¤Î¤¢¤¤¤À¤Ë¤Ï¾¤Î°ìÃפ¹¤ëcatch
¤¬¤Ê¤¤¤È¤·¤Æ¡Ë¡£
throw
¤Î¼Â¹Ô¤Ë¤è¤ê¡¢
Âбþ¤¹¤ëcatch
¤Þ¤Ç¤Î¤¹¤Ù¤Æ¤ÎLisp¤Î¹½Â¤¤òÈ´¤±½Ð¤·¤Þ¤¹¡£
¤³¤ì¤Ë¤Ï´Ø¿ô¸Æ¤Ó½Ð¤·¤â´Þ¤ß¤Þ¤¹¡£
let
¤ä´Ø¿ô¸Æ¤Ó½Ð¤·¤Ê¤É¤Î«Çû¤òºî¤ë¹½Â¤¤«¤é¤â¤³¤Î¤è¤¦¤ËÈ´¤±½Ð¤¹¤Î¤Ç¡¢
Ä̾ï¤É¤ª¤êÈ´¤±½Ð¤¹¾ì¹ç¤ÈƱÍͤË«Çû¤ò²ò¤¤Þ¤¹
¡Êsee Local Variables¡Ë¡£
ƱÍͤˡ¢throw
¤Ï¡¢save-excursion
¡Êsee Excursions¡Ë¤Ç
Êݸ¤·¤¿¥Ð¥Ã¥Õ¥¡¤ä°ÌÃÖ¾ðÊó¡¢
save-restriction
¤ÇÊݸ¤·¤¿¥Ê¥í¥¤¥ó¥°¾õÂÖ¡¢
save-window-excursion
¡Êsee Window Configurations¡Ë¤ÇÊݸ¤·¤¿
¥¦¥£¥ó¥É¥¦¤ÎÁªÂò¾õÂÖ¤âÉü¸µ¤·¤Þ¤¹¡£
¤µ¤é¤Ë¡¢¥¹¥Ú¥·¥ã¥ë¥Õ¥©¡¼¥àunwind-protect
¤ÇÀßÄꤷ¤¿¸å»ÏËö¤ò
¤³¤Î¥Õ¥©¡¼¥à¤«¤éÈ´¤±½Ð¤¹¤È¤¤Ë¼Â¹Ô¤·¤Þ¤¹¡Êsee Cleanups¡Ë¡£
throw
¤Ï¡¢¥Æ¥¥¹¥È¾å¤Ç¡¢
¥¸¥ã¥ó¥×Àè¤Ç¤¢¤ëcatch
¤ÎÆâ¦¤Ë¸½¤ì¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£
throw
¤Ï¡¢catch
Æâ¤«¤é¸Æ¤Ð¤ì¤¿Ê̤δؿô¤«¤é¤âÌá¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£
throw
¤Î¼Â¹Ô¤¬¡¢
»þ´ÖŪ¤Ëcatch
¤ËÆþ¤Ã¤¿¤¢¤È¤Ç¡¢¤«¤Ä¡¢¤½¤ì¤«¤éÈ´¤±¤ë¤Þ¤¨¤Ç¤¢¤ë¸Â¤ê¡¢
throw
¤ÏÂбþ¤¹¤ëcatch
¤ò»²¾È¤Ç¤¤Þ¤¹¡£
¥¨¥Ç¥£¥¿¥³¥Þ¥ó¥É¥ë¡¼¥×¡Êsee Recursive Editing¡Ë¤«¤éÈ´¤±¤ë
exit-recursive-edit
¤Ê¤É¤Î¥³¥Þ¥ó¥É¤Ç
throw
¤ò»È¤¨¤ë¤Î¤Ï¡¢¤³¤Î¤è¤¦¤ÊÍýͳ¤«¤é¤Ç¤¹¡£
Common Lisp¤Ë´Ø¤·¤¿Ãí°Õ¡§
Common Lisp¤ò´Þ¤à¤Û¤È¤ó¤É¤Î¾¤ÎLisp¤Ë¤Ï¡¢ ÈóÃ༡Ū¤ËÀ©¸æ¤ò°Ü¤¹ÊýË¡¤¬¤¤¤¯¤Ä¤«¤¢¤ë¡£ ¤¿¤È¤¨¤Ð¡¢
return
¡¢return-from
¡¢go
¡£ Emacs Lisp¤Ë¤Ïthrow
¤·¤«¤Ê¤¤¡£
catch
¤Ï¡¢´Ø¿ôthrow
¸þ¤±¤ËÌá¤ê°ÌÃÖ¤ò³ÎΩ¤¹¤ë¡£
¤½¤ÎÌá¤ê°ÌÃ֤ϡ¢tag¤Ë¤è¤Ã¤ÆÂ¾¤ÎÌá¤ê°ÌÃ֤ȶèÊ̤µ¤ì¤ë¡£
tag¤Ï¡¢nil
°Ê³°¤Ê¤é¤ÐǤ°Õ¤ÎLisp¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤è¤¤¡£
°ú¿ôtag¤Ï¡¢Ìá¤ê°ÌÃÖ¤ò³ÎΩ¤¹¤ë¤Þ¤¨¤Ë¡¢Ä̾ï¤É¤ª¤êɾ²Á¤µ¤ì¤ë¡£
Ìá¤ê°ÌÃÖ¤ò³ÎΩ¤·¤Æ¤«¤é¡¢catch
¤Ï¡¢body¤Î¥Õ¥©¡¼¥à¤ò
¥Æ¥¥¹¥È¾å¤Î½ç¤Ëɾ²Á¤¹¤ë¡£
¥¨¥é¡¼¤äÈó¥í¡¼¥«¥ëæ½Ð¤Ê¤·¤Ë¥Õ¥©¡¼¥à¤Î¼Â¹Ô¤¬ÉáÄ̤˽ªÎ»¤·¤¿¾ì¹ç¡¢
catch
¤Ï¡¢ºÇ¸å¤ÎËÜÂÎ¥Õ¥©¡¼¥à¤ÎÃͤòÊÖ¤¹¡£
body¤ÎÆâ¦¤Ç¡¢tag¤ÈƱ¤¸Ãͤò»ØÄꤷ¤¿throw
¤¬¼Â¹Ô¤µ¤ì¤ë¤È¡¢
catch
¤Ï¤¿¤À¤Á¤Ë½ªÎ»¤¹¤ë¡£
¤³¤Î¤È¤ÊÖ¤¹Ãͤϡ¢throw
¤ÎÂè2°ú¿ô¤Ë»ØÄꤵ¤ì¤¿¤â¤Î¤Ç¤¢¤ë¡£
throw
¤ÎÌÜŪ¤Ï¡¢
catch
¤Ç¤Þ¤¨¤â¤Ã¤Æ³ÎΩ¤·¤Æ¤ª¤¤¤¿Ìá¤ê°ÌÃÖ¤ØÉüµ¢¤¹¤ë¤³¤È¤Ç¤¢¤ë¡£
°ú¿ôtag¤Ï¡¢¤µ¤Þ¤¶¤Þ¤Ê´û¸¤ÎÌá¤ê°ÌÃÖ¤«¤éÁª¤Ö¤¿¤á¤Ë»È¤¦¡£
tag¤Ï¡¢catch
¤Ç»ØÄꤷ¤¿ÃͤÈeq
¤Ç¤¢¤ëɬÍפ¬¤¢¤ë¡£
tag¤ËÊ£¿ô¤ÎÌá¤ê°ÌÃÖ¤¬°ìÃפ¹¤ë¾ì¹ç¤Ë¤Ï¡¢¤â¤Ã¤È¤âÆâ¦¤Î¤â¤Î¤ò»È¤¦¡£
°ú¿ôvalue¤Ï¡¢Âбþ¤¹¤ëcatch
¤ÎÌá¤êÃͤȤ·¤Æ»È¤¦¡£
¥¿¥°tag¤Ç¤¢¤ë͸ú¤ÊÌá¤ê°ÌÃÖ¤¬¤Ê¤±¤ì¤Ð¡¢
(tag value)
¤òȼ¤Ã¤¿¥¨¥é¡¼no-catch
¤òÄÌÃΤ¹¤ë¡£