「*error*」の版間の差分
細編集の要約なし |
細編集の要約なし |
||
(同じ利用者による、間の1版が非表示) | |||
1行目: | 1行目: | ||
{{AutoLISP}} | |||
; 構文 | ; 構文 | ||
: (*error* ''string'') | : (*error* ''string'') | ||
8行目: | 9行目: | ||
: CAD は、*error* 関数に 1 つのエラーの内容を示す文字列を渡す。 | : CAD は、*error* 関数に 1 つのエラーの内容を示す文字列を渡す。 | ||
: *error* 関数には、引数のない command 関数の呼び出し (たとえば (command))を含めることができる。これにより、command 関数を使用して直前に呼び出されたコマンドはキャンセルされる。 | : *error* 関数には、引数のない command 関数の呼び出し (たとえば (command))を含めることができる。これにより、command 関数を使用して直前に呼び出されたコマンドはキャンセルされる。 | ||
; 引数 | ; 引数 | ||
:* string : 文字列 | :* string : 文字列 | ||
; 戻り値 | ; 戻り値 | ||
18行目: | 21行目: | ||
; サンプル | ; サンプル | ||
: 次の関数は、AutoLISP の標準エラー処理と同じことを行う。 エラーの説明の前に、「エラー:」という語を表示する。 | <pre class="brush:autolisp;"> | ||
; 次の関数は、AutoLISP の標準エラー処理と同じことを行う。 エラーの説明の前に、「エラー:」という語を表示する。 | |||
(defun *error* (msg) | |||
(princ "エラー:") | |||
(princ msg) | |||
(princ) | |||
) | |||
; 次の例は、コマンド関数を定義する場合の一般的なエラー処理方法。 | |||
(defun c:myslope ( ) | (defun c:myslope ( ) | ||
(setq temperror *error*) ; 標準のエラー処理を保存 | (setq temperror *error*) ; 標準のエラー処理を保存 | ||
45行目: | 49行目: | ||
(setq *error* temperror) ; エラー処理を元に戻す | (setq *error* temperror) ; エラー処理を元に戻す | ||
) | ) | ||
</pre> | |||
----- | ----- |
2015年12月17日 (木) 17:02時点における最新版
- 構文
- (*error* string)
- 機能
- ユーザ定義可能なエラー処理関数。
- *error* 関数が nil でない場合は、LISP のエラー条件が存在するときに、常にこの関数を実行する。
- CAD は、*error* 関数に 1 つのエラーの内容を示す文字列を渡す。
- *error* 関数には、引数のない command 関数の呼び出し (たとえば (command))を含めることができる。これにより、command 関数を使用して直前に呼び出されたコマンドはキャンセルされる。
- 引数
-
- string : 文字列
- 戻り値
- なし
- vl-exit-with-value を使用した場合、値を返すことが出来る。
- サンプル
; 次の関数は、AutoLISP の標準エラー処理と同じことを行う。 エラーの説明の前に、「エラー:」という語を表示する。 (defun *error* (msg) (princ "エラー:") (princ msg) (princ) ) ; 次の例は、コマンド関数を定義する場合の一般的なエラー処理方法。 (defun c:myslope ( ) (setq temperror *error*) ; 標準のエラー処理を保存 (setq *error* myerror) ; 独自のエラー処理 myerror を設定 (setq p1 (getpoint "1点目: ")) (setq p2 (getpoint p1 "2点目: ")) (setq slope (/ (-(cadr p2) (cadr p1)) (-(car p2) (car p1)))) (princ (strcat "Slope equals " (rtos slope 2 2))) (setq *error* temperror) ; エラー処理を元に戻す ) ; c:myslope で使用する 独自のエラー処理 myerror 関数 (defun myerror (msg) (if (= msg "角度0(ゼロ)") (prompt "\n 垂直です。") (prompt (strcat "\n" msg) ) (setq *error* temperror) ; エラー処理を元に戻す )
関連事項