% Function SIGNAL
Function SIGNAL
signal
datum &rest arguments => nil
datum, arguments - コンディション指定子であり、標準の型はsimple-error
。
datumとargumentsで指定されたコンディションを通知します。
もしコンディションが捕捉されなかったときは、
signal
はnil
を返却します。
(defun handle-division-conditions (condition)
(format t "Considering condition for division condition handling~%")
(when (and (typep condition 'arithmetic-error)
(eq '/ (arithmetic-error-operation condition)))
(invoke-debugger condition)))
HANDLE-DIVISION-CONDITIONS
(defun handle-other-arithmetic-errors (condition)
(format t "Considering condition for arithmetic condition handling~%")
(when (typep condition 'arithmetic-error)
(abort)))
HANDLE-OTHER-ARITHMETIC-ERRORS
(define-condition a-condition-with-no-handler (condition) ())
A-CONDITION-WITH-NO-HANDLER
(signal 'a-condition-with-no-handler)
NIL
(handler-bind ((condition #'handle-division-conditions)
(condition #'handle-other-arithmetic-errors))
(signal 'a-condition-with-no-handler))
Considering condition for division condition handling
Considering condition for arithmetic condition handling
NIL
(handler-bind ((arithmetic-error #'handle-division-conditions)
(arithmetic-error #'handle-other-arithmetic-errors))
(signal 'arithmetic-error :operation '* :operands '(1.2 b)))
Considering condition for division condition handling
Considering condition for arithmetic condition handling
Back to Lisp Toplevel
*break-on-signals*
により
デバッガーに入るかもしれません。
通知されたコンディションのハンドラーは 遷移を制御するかもしれません。
存在するハンドラーの束縛
なし。
*break-on-signals*
,
error
,
simple-condition
,
9.1.4. コンディションの通知と捕捉
もし(typep datum *break-on-signals*)
がtrueのときは、
通知処理を行う前にデバッガーに入ります。
continue
restart
は通知処理を継続するときに使われます。
このことは、条件を通知すべき、あるいは通知しなければならない
他のすべての関数やマクロにも当てはまります。