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))
"no-such-program")
(load-init-file load.
>> Init file failed to NIL
なし。
なし。
handler-case
, 9.1. コンディションシステムの説明
ignore-errors . forms) (
これは下記のものと同等です。
handler-case (progn . forms)
(error (condition) (values nil condition))) (
例外の状況では第二返却値がコンディションであるので、 通常の場合は第二返却値を省略するかnil
にして、 2つの状況を区別できるようにするのが一般的です(ただし必須ではありません)。