Function SIGNAL

UP


Function SIGNAL

Function SIGNAL

構文

signal datum &rest arguments => nil

引数と戻り値

datum, arguments - コンディション指定子であり、標準の型はsimple-error

定義

datumargumentsで指定されたコンディションを通知します。 もしコンディションが捕捉されなかったときは、 signalnilを返却します。

例文

(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*

例外

なし。

参考

*break-on-signals*, error, simple-condition, 9.1.4. コンディションの通知と捕捉

備考

もし(typep datum *break-on-signals*)trueのときは、 通知処理を行う前にデバッガーに入ります。 continue restartは通知処理を継続するときに使われます。 このことは、条件を通知すべき、あるいは通知しなければならない 他のすべての関数やマクロにも当てはまります。


TOP, Github