Previous: Handling Errors, Up: Errors [Contents][Index]
¥¨¥é¡¼¤òÄÌÃΤ¹¤ë¤È¤¤Ë¤Ï¡¢ÆÉ¼Ô¤¬°Õ¿Þ¤¹¤ë¥¨¥é¡¼¤Î¼ïÎà¤ò»ØÄꤹ¤ë ¥¨¥é¡¼¥·¥ó¥Ü¥ë¡Êerror symbol¡Ë¤ò»ØÄꤷ¤Þ¤¹¡£ ³Æ¥¨¥é¡¼¤Ë¤Ï¡¢¤½¤ì¤òʬÎह¤ë°ì°Õ¤Ê̾Á°¤¬¤¢¤ê¤Þ¤¹¡£ ¤³¤ì¤Ï¡¢Emacs Lisp¸À¸ì¤ÇÄêµÁ¤µ¤ì¤¿¥¨¥é¡¼¤òºÙʬÎष¤¿¤â¤Î¤Ç¤¹¡£
¤³¤ì¤é¤ÎºÙʬÎà¤Ï¡¢¥¨¥é¡¼¾ò·ï¡Êerror conditions¡Ë¤È¸Æ¤Ð¤ì¤ë
¤è¤êÂ礤ʥ¯¥é¥¹¤Î³¬ÁؤˤޤȤá¤é¤ì¤Æ¤¤¤Þ¤¹¡£
¥¨¥é¡¼¾ò·ï¤Ï¡¢¾ò·ï̾¡Êcondition names¡Ë¤Ç¼±Ê̤·¤Þ¤¹¡£
¤â¤Ã¤È¤âºÙ¤«¤¤Ê¬Îà¤Ï¡¢¥¨¥é¡¼¥·¥ó¥Ü¥ë¤½¤Î¤â¤Î¤Ç¤¹¡£
³Æ¥¨¥é¡¼¥·¥ó¥Ü¥ë¤Ï¾ò·ï̾¤Ç¤â¤¢¤ê¤Þ¤¹¡£
¤è¤êÂ礤ʥ¯¥é¥¹¤òɽ¤¹¾ò·ï̾error
¤â¤¢¤ê¤Þ¤¹¡£
¤³¤ì¤Ï¤¹¤Ù¤Æ¤Î¼ïÎà¤Î¥¨¥é¡¼¤òɽ¤·¤Þ¤¹¡£
¤·¤¿¤¬¤Ã¤Æ¡¢³Æ¥¨¥é¡¼¤Ë¤Ï¡¢1¤Ä°Ê¾å¤Î¾ò·ï̾¤¬¤¢¤ê¤Þ¤¹¡£
¤Ä¤Þ¤ê¡¢error
¡¢error
¤È¤ÏÊ̤Υ¨¥é¡¼¥·¥ó¥Ü¥ë¡¢¤¢¤ë¤¤¤Ï¡¢
¤½¤ÎÃæ´Ö¤ÎʬÎà¤Ë°¤¹¤ë¤â¤Î¤Ç¤¹¡£
¤¢¤ë¥·¥ó¥Ü¥ë¤¬¥¨¥é¡¼¥·¥ó¥Ü¥ë¤Ç¤¢¤ë¤¿¤á¤Ë¤Ï¡¢¤½¤Î¥·¥ó¥Ü¥ë¤Ë¤Ï¡¢
¾ò·ï̾¤Î¥ê¥¹¥È¤òÍ¿¤¨¤ë°Àerror-conditions
¤¬¤¢¤ë¤³¤È¤¬É¬ÍפǤ¹¡£
¤³¤Î¥ê¥¹¥È¤Ï¡¢¤½¤Î¥¨¥é¡¼¤¬Â°¤¹¤ë¥¨¥é¡¼¾ò·ï¤òÄêµÁ¤·¤Þ¤¹¡£
¡Ê¥¨¥é¡¼¥·¥ó¥Ü¥ë¤½¤Î¤â¤Î¤È¡¢¥·¥ó¥Ü¥ëerror
¤Ï¡¢
¤Ä¤Í¤Ë¤³¤Î¥ê¥¹¥È¤ÎÍ×ÁǤǤ¢¤ë¤³¤È¡£¡Ë
¤·¤¿¤¬¤Ã¤Æ¡¢¾ò·ï̾¤Î³¬Áؤϡ¢
¥¨¥é¡¼¥·¥ó¥Ü¥ë¤Î°Àerror-conditions
¤ÇÄêµÁ¤µ¤ì¤Þ¤¹¡£
error-conditions
¥ê¥¹¥È¤Ë²Ã¤¨¤Æ¡¢
¥¨¥é¡¼¥·¥ó¥Ü¥ë¤Ë¤Ï¡¢Â°Àerror-message
¤âɬÍפǤ¹¡£
¤³¤Î°À¤ÎÃͤϡ¢¤½¤Î¥¨¥é¡¼¤¬½èÍý¤µ¤ì¤Ê¤¤¤È¤¤Ëɽ¼¨¤µ¤ì¤ëʸ»úÎó¤Ç¤¹¡£
°Àerror-message
¤¬¤¢¤ë¤Î¤Ë¡¢¤½¤ì¤¬Ê¸»úÎó¤Ç¤Ê¤±¤ì¤Ð¡¢
¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸‘peculiar error’¤ò»È¤¤¤Þ¤¹¡£
°Ê²¼¤Ë¡¢¿·¤¿¤Ê¥¨¥é¡¼¥·¥ó¥Ü¥ënew-error
¤ÎÄêµÁÊýË¡¤ò¼¨¤·¤Þ¤¹¡£
(put 'new-error 'error-conditions '(error my-own-errors new-error)) ⇒ (error my-own-errors new-error)
(put 'new-error 'error-message "A new error") ⇒ "A new error"
¤³¤Î¥¨¥é¡¼¤Ë¤Ï¡¢3¤Ä¤Î¾ò·ï̾¤¬¤¢¤ê¤Þ¤¹¡£
¤â¤Ã¤È¤âºÙ¤«¤¤Ê¬Îà¤Ç¤¢¤ënew-error
¡¢
¤½¤ì¤è¤êÂ礤ÊʬÎà¤È¤Ç¤¢¤ë¤È¹Í¤¨¤Æ¤¤¤ëmy-own-error
¡¢
¤â¤Ã¤È¤âÂ礤ÊʬÎà¤Ç¤¢¤ëerror
¤Ç¤¹¡£
¥¨¥é¡¼Ê¸»úÎó¤ÏÂçʸ»ú¤Ç»Ï¤á¤ë¤Ù¤¤Ç¤¹¤¬¡¢¥Ô¥ê¥ª¥É¤Ç½ª¤¨¤Þ¤»¤ó¡£ ¤³¤ì¤Ï¡¢Emacs¤Î¾¤Î´·½¬¤ÈÀ°¹ç¤ò¤È¤ë¤¿¤á¤Ç¤¹¡£
ÉáÄÌ¡¢Emacs¼«¿È¤¬new-error
¤òÄÌÃΤ¹¤ë¤³¤È¤Ï¤¢¤ê¤¨¤Þ¤»¤ó¡£
¤Ä¤®¤Î¤è¤¦¤Ë¡¢ÆÉ¼Ô¤Î¥³¡¼¥É¤ÇÌÀ¼¨Åª¤Ë
signal
¡Êsee Signaling Errors¡Ë¤ò¸Æ¤ó¤À¤È¤¤À¤±¤Ç¤¹¡£
(signal 'new-error '(x y)) error→ A new error: x, y
¤³¤Î¥¨¥é¡¼¤Ï¡¢3¤Ä¤Î¾ò·ï̾¤Î¤É¤ì¤Ç¤â½èÍý¤Ç¤¤Þ¤¹¡£
¤Ä¤®¤ÎÎã¤Ï¡¢new-error
¤È
¥¯¥é¥¹my-own-errors
¤ÎǤ°Õ¤Î¾¤Î¥¨¥é¡¼¤ò½èÍý¤·¤Þ¤¹¡£
(condition-case foo (bar nil t) (my-own-errors nil))
¥¨¥é¡¼¤òʬÎह¤ë½ÅÍפÊÊýË¡¤Ï¡¢¤½¤ì¤é¤Î¾ò·ï̾¤Ë¤è¤ë¤³¤È¤Ç¤¹¡£
¤Ä¤Þ¤ê¡¢¥¨¥é¡¼¤Ë°ìÃפ¹¤ë¥Ï¥ó¥É¥é¤òõ¤¹¤¿¤á¤Ë¾ò·ï̾¤ò»È¤¤¤Þ¤¹¡£
¥¨¥é¡¼¥·¥ó¥Ü¥ë¤Ï¡¢°Õ¿Þ¤·¤¿¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤È¾ò·ï̾¤Î¥ê¥¹¥È¤ò»ØÄꤹ¤ë
´ÊÊØ¤ÊÊýË¡¤òÄ󶡤¹¤ë¤À¤±¤Ç¤¹¡£
signal
¤Ë¡¢1¤Ä¤Î¥¨¥é¡¼¥·¥ó¥Ü¥ë¤Ç¤Ï¤Ê¤¯¡¢
¾ò·ï̾¤Î¥ê¥¹¥È¤ò»ØÄꤹ¤ë¤Î¤Ç¤Ï¤ï¤º¤é¤ï¤·¤¤¤Ç¤·¤ç¤¦¡£
°ìÊý¡¢¾ò·ï̾¤Ê¤·¤Ë¥¨¥é¡¼¥·¥ó¥Ü¥ë¤À¤±¤ò»È¤¦¤Î¤Ç¤Ï¡¢
condition-case
¤ÎǽÎϤò¤¤¤Á¤¸¤ë¤·¤¯Â»¤Ê¤¤¤Þ¤¹¡£
¾ò·ï̾¤¬¤¢¤ë¤³¤È¤Ç¡¢¥¨¥é¡¼¥Ï¥ó¥É¥é¤ò½ñ¤¯¤È¤¤Ë¤µ¤Þ¤¶¤Þ¤Ê¥ì¥Ù¥ë¤Ë
°ìÈ̲½¤·¤Æ¥¨¥é¡¼¤òʬÎà¤Ç¤¤ë¤Î¤Ç¤¹¡£
¥¨¥é¡¼¥·¥ó¥Ü¥ë¤À¤±¤ò»È¤Ã¤¿¤Î¤Ç¤Ï¡¢
ºÇºÙʬÎà°Ê³°¤Î¥ì¥Ù¥ë¤òºï½ü¤·¤Æ¤·¤Þ¤¦¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£
¤¹¤Ù¤Æ¤Îɸ½à¥¨¥é¡¼Ì¾¤È¤½¤ì¤é¤Î¾ò·ï̾¤Ë¤Ä¤¤¤Æ¤Ï¡¢ See Standard Errors¡£