Macro IGNORE-ERRORS

UP


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


TOP, Github