エラー処理

エラーハンドリング

ハンドラ関数は次の形式にします。

void dMessageFunction ( int errnum, const char *msg, va_list ap );

サンプルコード

たとえば、

static void MessageHandler( int num, const char *msg, va_list ap )
{
   printf( "Error %d: ",num );
   vprintf( msg, ap );
}

のように実装します。この場合、

Error 2: mass must be > 0 (c:\ode-0.11.1\ode\src\mass.cpp:49)

ように表示されます。これはエラーをハンドリングしなかったとき、

のように表示されるメッセージです。

設定

引数のfnに0を渡すと、既定のハンドラが使用されます。

void dSetErrorHandler ( dMessageFunction *fn );
void dSetDebugHandler ( dMessageFunction *fn );
void dSetMessageHandler ( dMessageFunction *fn );

サンプルコード

dSetMessageHandler( &MessageHandler );

取得

dMessageFunction *dGetErrorHandler();
dMessageFunction *dGetDebugHandler();
dMessageFunction *dGetMessageHandler();

エラーの発生

void dError ( int num, const char *msg, ... );
void dDebug ( int num, const char *msg, ... );
void dMessage ( int num, const char *msg, ... );

サンプルコード

dMessage( 256, " (%s:%d)", __FILE__, __LINE__ );