Variable *BREAK-ON-SIGNALS*
型指定子
式(typep condition *break-on-signals*)
がtrueのとき、 signal
の呼び出しや、 その他の暗黙的にsignal
を呼び出す、 error
のような操作は、 そのコンディションを通知する前にデバッガーに入ります。
continue
restart
は *break-on-signals*
による処理の中断が生じたときに、 通常の通知処理を継続するときに使われます。
*break-on-signals* => NIL
ignore-errors (error 'simple-error :format-control "Fooey!"))
(=> NIL, #<SIMPLE-ERROR 32207172>
let ((*break-on-signals* 'error))
(ignore-errors (error 'simple-error :format-control "Fooey!")))
(
>> Break: Fooey!
>> BREAK entered because of *BREAK-ON-SIGNALS*.continue, type :CONTINUE followed by an option number:
>> To 1: Continue to signal.
>> 2: Top level.
>> 1
>> Debug> :CONTINUE signal.
>> Continue to => NIL, #<SIMPLE-ERROR 32212257>
let ((*break-on-signals* 'error))
(error 'simple-error :format-control "Fooey!"))
(
>> Break: Fooey!
>> BREAK entered because of *BREAK-ON-SIGNALS*.continue, type :CONTINUE followed by an option number:
>> To 1: Continue to signal.
>> 2: Top level.
>> 1
>> Debug> :CONTINUE signal.
>> Continue to
>> Error: Fooey!continue, type :CONTINUE followed by an option number:
>> To 1: Top level.
>> 1
>> Debug> :CONTINUE >> Top level.
なし。
break
, signal
, warn
, error
, typep
, 9.1. コンディションシステムの説明
*break-on-signals*
は、 主に通知したコードのデバッグに使う意図があります。 *break-on-signals*
が設定されたとき、 ユーザは最も厳しい仕様を選択することが推奨されます。 *break-on-signals*
を設定することは、 コンディションの通知を捕捉することのモジュラー処理に違反します。 実際には*break-on-signals*
を設定することの完全な効果は、 場合によっては予測できないかもしれません。 なぜなら、ユーザーはsignal
がコード内で、 どれくらいの種類や数で呼び出されているのか 気が付いていないかもしれないからです。
*break-on-signals*
は、 デバッガーに早く入ることができますが、 このような場合でもerror
やcerror
のような操作で起こる 追加のデバッガーの起動を排除するようなものではありません。