*push-error-using-command*

提供:GizmoLabs - だいたい CAD LISP なサイト
2014年8月18日 (月) 14:02時点におけるGizmon (トーク | 投稿記録)による版 (ページの作成:「{{AutoLISP}} ; 構文 : (*push-error-using-command*) ; 機能 : カスタム *error* ハンドラ内での command 関数の使用を示すエラー処理関数。 ;...」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
構文
(*push-error-using-command*)


機能
カスタム *error* ハンドラ内での command 関数の使用を示すエラー処理関数。
引数
  • なし
戻り値
T
  • メモ: *push-error-using-command* に対する呼び出しは、command 関数の使用を含むカスタム *error* ハンドラ関数を設定した後に実行する必要がある。
  • *push-error-using-command* を使用する場合、カスタム *error* ハンドラからアクセスできるのはグローバル変数だけに制限され、エラーが発生した関数内で定義されているローカル変数にはアクセスできない。ローカル変数にアクセスする必要がある場合、command 関数のすべてのインスタンスを command-s 関数と置き換え、*push-error-using-stack* に対する呼び出しを使用する。
  • 注: カスタム *error* ハンドラ内で command 関数が使われている場合、この関数は使用できない。


サンプル
; *pop-error-mode* 関数の使用例
(defun my_err (err_msg)
    (if (/= err_msg "関数キャンセル")
      (prompt (strcat "\nエラー : " err_msg))
    )
    (command "._undo" "_e")
    (command "._U")
    (setq *error* olderr)
  (princ)
)

(defun myUtil (key / )
    (setq olderr *error*
          *error* my_err)
    (*push-error-using-command*)    ; カスタム エラー ハンドラーのcommand-s ではなくコマンド関数の使用を示す
    (command "._undo" "_group")     ; 次にこのサンプルでは実行されませんがエラー ハンドラーを設定するための良いフレームワーク

    (/ 1 0)                         ; トリガー、カスタム エラー ハンドラーの削除コードを設定するときに
                                    ; 不適切な値を持つ関数を呼び出す

    ;; ここでなんかのタスクを実行。

    (command "._undo" "_e")
    (setq *error* olderr)                ; ;古い *error* ハンドラの復元
    (*pop-error-mode*)                   ; ;終了の使用 *push-error-using-command*
)

; サンプル コードをロードした後、コマンド プロンプトに対して (myutil "String") と入力し、
; エラー ハンドラを入力。


関連事項