% Macro IGNORE-ERRORS
Macro IGNORE-ERRORS
ignore-errors form* => result*
form - 暗黙のprogn
result - 通常の状態のときはformの返却値です。
例外の状態のときは2つの多値であるnilとコンディションが返却されます。
ignore-errorsは型errorのコンディションによる
デバッガーへの入場を禁止するときに使われます。
とくにignore-errorsは型errorの
コンディションのハンドラーが確立された動的環境下でformを実行し、
もし該当するものが起動されたとき、
そのようなコンディションは、
ignore-errorsフォームから
nilと通知されたコンディションを
2つの多値で返却することによって処理されます。
もしformから通常の返却が生じたときは、
そのどのような返却値もignore-errorsによって返却されます。
(defun load-init-file (program)
(let ((win nil))
(ignore-errors ;もし失敗してもデバッガーに入らない
(load (merge-pathnames (make-pathname :name program :type :lisp)
(user-homedir-pathname)))
(setq win t))
(unless win (format t "~&Init file failed to load.~%"))
win))
(load-init-file "no-such-program")
>> Init file failed to load.
NIL
なし。
なし。
handler-case,
9.1. コンディションシステムの説明
(ignore-errors . forms)
これは下記のものと同等です。
(handler-case (progn . forms)
(error (condition) (values nil condition)))
例外の状況では第二返却値がコンディションであるので、
通常の場合は第二返却値を省略するかnilにして、
2つの状況を区別できるようにするのが一般的です(ただし必須ではありません)。