% Restart STORE-VALUE
Restart STORE-VALUE
かわりに使う値(基本的に使い続ける)
store-value
restart
は、
一般的にはcell-error
かtype-error
のような
エラーの型から回復を試みるハンドラーによって使用されます。
回復は置き換えるデータの希望を指定して
それに永久に置き換えることによって行います。
(defun type-error-auto-coerce (c)
(when (typep c 'type-error)
(let ((r (find-restart 'store-value c)))
(handler-case (let ((v (coerce (type-error-datum c)
(type-error-expected-type c))))
(invoke-restart r v))
(error ()))))) => TYPE-ERROR-AUTO-COERCE
(let ((x 3))
(handler-bind ((type-error #'type-error-auto-coerce))
(check-type x float)
x)) => 3.0
9.1.4.2. restart
,
9.1.4.2.2. restart
のインターフェイス,
invoke-restart
,
store-value
(関数),
ccase
,
check-type
,
ctypecase
,
use-value
(関数),
use-value
(restart
)