Restart MUFFLE-WARNING

UP


Restart MUFFLE-WARNING

Restart MUFFLE-WARNING

要求される引数のデータ

なし。

定義

このrestartwarnによって確立され、 warningコンディションのハンドラーは warnに対して警告はすでに実行されており それ以上のアクションが必要ないということを伝える方法を持っています。

例文

(defvar *all-quiet* nil) =>  *ALL-QUIET*
(defvar *saved-warnings* '()) =>  *SAVED-WARNINGS*
(defun quiet-warning-handler (c)
  (when *all-quiet*
    (let ((r (find-restart 'muffle-warning c)))
      (when r 
        (push c *saved-warnings*)
        (invoke-restart r)))))
=>  CUSTOM-WARNING-HANDLER
(defmacro with-quiet-warnings (&body forms)
  `(let ((*all-quiet* t)
         (*saved-warnings* '()))
     (handler-bind ((warning #'quiet-warning-handler))
       ,@forms
       *saved-warnings*)))
=>  WITH-QUIET-WARNINGS
(setq saved
  (with-quiet-warnings
    (warn "Situation #1.")
    (let ((*all-quiet* nil))
      (warn "Situation #2."))
    (warn "Situation #3.")))
>>  Warning: Situation #2.
=>  (#<SIMPLE-WARNING 42744421> #<SIMPLE-WARNING 42744365>)
(dolist (s saved) (format t "~&~A~%" s))
>>  Situation #3.
>>  Situation #1.
=>  NIL

参考

9.1.4.2. restart, 9.1.4.2.2. restartのインターフェイス, invoke-restart, muffle-warning(関数), warn,


TOP, Github