「*push-error-using-command*」の版間の差分

提供:GizmoLabs - だいたい CAD LISP なサイト
(ページの作成:「{{AutoLISP}} ; 構文 : (*push-error-using-command*) ; 機能 : カスタム *error* ハンドラ内での command 関数の使用を示すエラー処理関数。 ;...」)
 
編集の要約なし
 
6行目: 6行目:
; 機能
; 機能
:  カスタム *error* ハンドラ内での command 関数の使用を示すエラー処理関数。  
:  カスタム *error* ハンドラ内での command 関数の使用を示すエラー処理関数。  


; 引数
; 引数
:* なし
:* なし


; 戻り値
; 戻り値
: T
: T


:* メモ: *push-error-using-command* に対する呼び出しは、command 関数の使用を含むカスタム *error* ハンドラ関数を設定した後に実行する必要がある。
:* メモ: *push-error-using-command* に対する呼び出しは、command 関数の使用を含むカスタム *error* ハンドラ関数を設定した後に実行する必要がある。

2019年5月8日 (水) 15:46時点における最新版

構文
(*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") と入力し、
; エラー ハンドラを入力。


関連事項