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*.
>> To continue, type :CONTINUE followed by an option number:
>> 1: Continue to signal.
>> 2: Top level.
>> Debug> :CONTINUE 1
>> Continue to signal.
=> NIL, #<SIMPLE-ERROR 32212257>
(let ((*break-on-signals* 'error))
(error 'simple-error :format-control "Fooey!"))
>> Break: Fooey!
>> BREAK entered because of *BREAK-ON-SIGNALS*.
>> To continue, type :CONTINUE followed by an option number:
>> 1: Continue to signal.
>> 2: Top level.
>> Debug> :CONTINUE 1
>> Continue to signal.
>> Error: Fooey!
>> To continue, type :CONTINUE followed by an option number:
>> 1: Top level.
>> Debug> :CONTINUE 1
>> 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のような操作で起こる 追加のデバッガーの起動を排除するようなものではありません。