% 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つの状況を区別できるようにするのが一般的です(ただし必須ではありません)。