Mathematica 9 is now available

Documentation / Mathematica / Mathematicaブック / Mathematicaの仕組み / MathLinkと外部プログラム通信 /

2.13.13 発展:エラーと割込みの処理

MathLinkからのデータの入出力の最中にさまざまな種類のエラーが発生する可能性がある.一度エラーが発生すると,MathLinkは非活性な状態となり,呼び出した関数は即座にすべて0を返す.

MathLinkプログラム中のエラー処理

複雑な操作を実行する場合は,処理の最後にエラーの発生をチェックするとよいだろう.もしエラーが発生していたら, MLClearError()を呼び出し, MathLinkを再度,活性化する必要がある.

残ったパケットをクリアする

エラーが発生したら,まだ処理していないパケットや式を棄却したいと思うときがある.そのような場合, MLNewPacket()を使う.

また,データ処理中のエラー発生では,処理を後戻りしてそのデータを違った方法で処理したいときもある.データの処理を開始する前に MLCreateMark()を呼んでマークを作成し,データを再処理する必要がでたらMLSeekMark()でマークの位置に戻るようにすれば,再処理が可能になる.ただし,処理が終り次第,MLDestroyMark()を呼び出しておくこと.そうしないと, MathLinkによるデータの保存が続いてしまう.

外部プログラムをアボートする

外部関数の実行中に Mathematicaに割込みをかけると,普通,外部関数をアボートかどうかを聞いてくる.ここでアボートを選択すると,外部プログラム中の大域変数 MLAbort 1に設定される.

MathLinkは呼び出された外部関数の途中から自動的に戻ってくることはない.実行に長い時間がかかる関数内では,その都度変数 MLAbortをチェックして,変数が設定されていたら直ちに関数から脱出するコードを明示的に書くべきである.



Any questions about topics on this page? Click here to get an individual response.Buy NowMore Information
THIS IS DOCUMENTATION FOR AN OBSOLETE PRODUCT.
SEE THE DOCUMENTATION CENTER FOR THE LATEST INFORMATION.