*error*

提供:GizmoLabs - だいたい CAD LISP なサイト
2009年10月26日 (月) 14:27時点におけるGizmon (トーク | 投稿記録)による版
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
構文
(*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)                ; エラー処理を元に戻す
)  



関連事項