% Variable *BREAK-ON-SIGNALS*
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
のような操作で起こる
追加のデバッガーの起動を排除するようなものではありません。