エラー チェック

これまでのサンプルでは、エラー チェックについてあまり触れませんでした。サンプルならこれで構いませんが、実際のプラグインを作成する場合は、エラーをチェックする必要があります。

ほとんどのメソッドは、オプションの最終引数を取ります。この引数は、ステータスの戻り値が保存されている MStatus 変数のポインタです。

らせんのサンプルで引数解析コードを以下のコードと置き換えると、ほとんどのエラーのチェックと処理が行われるようになります。

// Parse the arguments.
for ( i = 0; i < args.length(); i++ )
    if ( MString( "-p" ) == args.asString( i, &stat )
        && MS::kSuccess == stat )
    {
        double tmp = args.asDouble( ++i, &stat );
        // argument can be retrieved as a double
        if ( MS::kSuccess == stat )
            pitch = tmp;
    }
    else if ( MString( "-r" ) == args.asString( i, &stat )
        && MS::kSuccess == stat )
    {
        double tmp = args.asDouble( ++i, &stat );
        // argument can be retrieved as a double
        if ( MS::kSuccess == stat )
            radius = tmp;
    }

&stat を asString() メソッドと asDouble() メソッドに追加すると、キャスト操作が成功したかどうかをチェックできます。

たとえばインデックスが引数の数より大きい場合、args.asString(i, &stat)MS::kFailure を返します。

または

引数を double に変換できない場合、args.asDouble(++i, &stat) はエラーになります。