「*error*」の版間の差分
編集の要約なし  | 
				細編集の要約なし  | 
				||
| 9行目: | 9行目: | ||
: CAD は、*error* 関数に 1 つのエラーの内容を示す文字列を渡す。  | : CAD は、*error* 関数に 1 つのエラーの内容を示す文字列を渡す。  | ||
: *error* 関数には、引数のない command 関数の呼び出し  (たとえば (command))を含めることができる。これにより、command 関数を使用して直前に呼び出されたコマンドはキャンセルされる。  | : *error* 関数には、引数のない command 関数の呼び出し  (たとえば (command))を含めることができる。これにより、command 関数を使用して直前に呼び出されたコマンドはキャンセルされる。  | ||
; 引数  | ; 引数  | ||
:* string : 文字列  | :* string : 文字列  | ||
; 戻り値  | ; 戻り値  | ||
| 19行目: | 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*)                ; 標準のエラー処理を保存     | ||
| 46行目: | 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)                ; エラー処理を元に戻す
 )  
関連事項