Function BREAK
break
&optional
format-control &rest
format-arguments => nil
format-control - format-control。デフォルトは実装依存。
format-arguments - format-arguments
break
は、format-controlとformat-argumentsをformat
で出力し、 そのあとプログラムによるエラー捕捉の機能による 割り込みの可能性を一切許さずに 直接デバッガーに入ります。
もしcontinue
restart
がデバッガー内で使用されたときは、 何の異常状態の回復処理を行わずに break
は即座にnil
を返却します。
break
はデバッガーに入ろうとする前に *debugger-hook*
にnil
を束縛します。
break "You got here with arguments: ~:S." '(FOO 37 A))
(37, A.
>> BREAK: You got here with these arguments: FOO, continue, type :CONTINUE followed by an option number:
>> To 1: Return from BREAK.
>> 2: Top level.
>> 1
>> Debug> :CONTINUE
>> Return from BREAK.=> NIL
デバッガーに入ります。
なし。
break
は、エラーの通知を使用せず、 プログラムの「ブレークポイント」として 一時的にデバッグに入りたいときに使われます。 このような理由から、break
はcerror
が取るような continue-format-control引数を受け取りません。 この点と、コンディションの捕捉によって割り込みが生じるという可能性がない点が、 break
とcerror
間のプログラムに見える違いです。
break
とcerror
のユーザーインターフェイスの外観は、 実装が必要とするインターフェイスにしたがって、 より大きく変えてしまっても許されます。 例えば、break
は従来のデバッガーではなく Lispのread-eval-print loopに入ってしまっても許されます。
break
は下記のように定義できます。
defun break (&optional (format-control "Break") &rest format-arguments)
(with-simple-restart (continue "Return from BREAK.")
(let ((*debugger-hook* nil))
(invoke-debugger
(make-condition 'simple-condition
(
:format-control format-control
:format-arguments format-arguments))))nil)