*push-error-using-stack*
- 構文
- (*push-error-using-stack*)
- 機能
- カスタム *error* ハンドラ内での AutoLISP スタックの変数の使用を示すエラー処理関数。
- BricsCADでは何もしない。
- 引数
-
- なし
- 戻り値
- T
- メモ :
- カスタム エラー ハンドラから、エラーが発生した関数内で定義されているスタック上のローカル AutoLISP 変数にアクセスできる。
- *push-error-using-stack* 関数に対する呼び出しは、*push-error-using-command* に対する以前の呼び出しより優先される。
- *push-error-using-command* または *push-error-using-stack* が呼び出されていない場合、AutoLISP は既定で *push-error-using-stack* が呼び出された場合と同様に動作する。
- 注: カスタム *error* ハンドラ内で command 関数が使われている場合、この関数は使用できない。
- サンプル
(setq var1 "グローバリュいち" ; グローバル変数をセット
var2 "グローバリュに")
(defun mySub_err (err_msg)
(if (/= err_msg "Function cancelled")
(progn
(prompt (strcat "\nエラー : " err_msg))
(prompt (strcat "\nローカルサブ1: " var1))
(prompt (strcat "\nローカルサブ2: " var2))
(terpri)
)
)
(command-s "._undo" "_e")
(command-s "._U")
(setq *error* olderr)
(princ)
)
(defun subUtil (val / olderr var1 var2)
(*push-error-using-stack*) ; カスタム エラー ハンドラーがローカル変数にアクセス権を持つことを示す。
(setq olderr *error*
*error* mySub_err)
(command "._undo" "_group") ; このサンプルでは実行されないがエラー ハンドラーを設定するための良いフレームワーク
(setq var1 "サブ1" ; ローカル変数をセット
var2 "サブ2")
;; Perform your tasks here
(strcat "Foo" val)
(command "._undo" "_e")
(setq *error* olderr) ; *error* の復元
(*pop-error-mode*) ; *push-error-using-stack* 終了のお知らせ
)
(defun my_err (err_msg)
(if (/= err_msg "Function cancelled")
(progn
(prompt (strcat "\nエラー : " err_msg))
(prompt (strcat "\nローカル1: " var1))
(prompt (strcat "\nローカル2: " var2))
(terpri)
))
(command "._undo" "_e")
(command "._U")
(setq *error* olderr)
(princ)
)
(defun myUtil (val / var1 var2)
(setq olderr *error*
*error* my_err)
(*push-error-using-command*) ; カスタム エラー ハンドラーのcommand-s ではなくコマンド関数の使用を示す
(setq var1 "ローカル1" ; ローカル変数をセット
var2 "ローカル2")
(command "._undo" "_group") ; このサンプルでは実行されないがエラー ハンドラーを設定するための良いフレームワーク
(subUtil val) ; 使用するカスタム関数を呼び出す *push-error-using-stack*
(/ 1 0) ; トリガー、カスタム エラー ハンドラーの削除コードを設定するときに不適切な値を持つ関数を呼び出す
;; なんらかのタスクを実行
(command "._undo" "_e")
(setq *error* olderr) ; *error* の復元
(*pop-error-mode*) ; *push-error-using-command* 終了のお知らせ
)
; サンプル コードをロードした後、コマンド プロンプトに対して (myutil 1) と入力してネストした関数の
; エラー ハンドラを入力し、(myutil "String") と入力してメイン関数のエラー ハンドラをテストする。
関連事項