AutoLISP 言語には、エラーを処理するための関数がいくつかあります。
エラーを正しく処理することにより、プログラムを丁寧に、予期される結果で終了することができます。AutoLISP プログラミング言語のエラー処理関数を使用することにより、次のことを行うことができます。
次の関数は、プログラムによって発生したエラーの処理に役立ちます。
プログラムの同じ式に複数のエラーがあると、AutoLISP がエラーを検出する順番を当てにできません。たとえば、inters 関数には複数の引数を指定する必要があり、各引数に 2D または 3D の点リストを指定する必要があります。次のように inters を呼び出します。
(inters 'a)
次の 2 つのエラーが発生します。引数の数が少なすぎることと、引数のタイプが違っていることです。次のエラー メッセージのどちらかが表示されます。
; *** ERROR: too few arguments ; *** ERROR: bad argument type: 2D/3D point
プログラムはどちらのエラーも処理するよう設計してください。
(defun foo () (print "Evaluating foo") '(1 2)) (defun bar () (print "Evaluating bar") 'b) (defun baz () (print "Evaluating baz") 'c)
inters 関数を使用した式が、AutoCAD ではどのように評価されるか注目してください。
コマンド: (inters (foo) (bar) (baz))
"Evaluating foo"
"Evaluating bar"
"Evaluating baz"
; *** エラー: 引数の数が少なすぎます
各引数は、AutoLISP が結果を inters に渡して、指定された引数の数が少なすぎることを検出する前に、正常に評価されました。
AutoCAD R14 以前では、同じ式が次のように評価されます。
コマンド: (inters (foo) (bar) (baz))
"Evaluating foo"
"Evaluating bar" error: 引数のタイプが違っています
AutoLISP は (foo) を評価してから inters に結果を渡します。結果が有効な 2D 点リストであるため、AutoLISP は続けて (bar) を評価し、ここで評価した結果が文字列で inters に対しては無効な引数タイプです。