MaplePushErrorProc - エラー処理プロシージャを送出 (プッシュ) する
MaplePopErrorProc - エラー処理プロシージャを削除 (ポップ) する
|
使い方
|
|
MaplePushErrorProc(kv, void (M_DECL *errorproc)( char *msg, void *d), void *data )
MaplePopErrorProc(kv)
|
|
パラメータ
|
|
kv
|
-
|
MKernelVector 型のカーネルハンドル
|
errorproc
|
-
|
エラー処理ルーチンで msg と d の 2 種類の引数を許容
|
data
|
-
|
errorproc に渡される値
|
|
|
|
|
説明
|
|
•
|
MaplePushErrorProc と MaplePopErrorProc の 2 つの関数は、例外処理ルーチンを管理するために使用します。
|
•
|
Maple では、エラー処理ルーチンのスタックを保持します。例外がレイズされるとスタックにあるそれぞれの関数が呼び出されます。これらの関数には 2 種類の引数が渡されます。最初の引数は msg で、これはレイズされる例外です。次に渡される引数は d で、MaplePushErrorProc が呼び出されたときに与えられた data の値です。
|
•
|
MaplePushErrorProc は、エラー処理スタックの最上部に関数 errorproc を追加します。例外が発生すると、data の値が errorproc に渡されます。
|
•
|
MaplePopErrorProc は、エラー処理ルーチンのスタックからエラー処理プロシージャを削除します。
|
•
|
不要になったエラー処理ルーチンは、スタックから削除されるということが重要です。
|
|
|
例
|
|
#include "maplec.h"
|
void M_DECL FreeMemoryBuffer( char *error, void *data )
|
{
|
free( data );
|
}
|
|
ALGEB M_DECL DoABunchOfWork( MKernelVector kv, ALGEB *args )
|
{
|
int *buffer = (int*)malloc( 1000 );
|
MaplePushErrorProc( kv, FreeMemoryBuffer, buffer );
|
CallAFunctionThatMightThrowAnException( kv, args, buffer );
|
MaplePopErrorProc( kv );
|
free( buffer );
|
return ToMapleNULL( kv );
|
}
|
|
|
|
|
Download Help Document
Was this information helpful?