これまでのサンプルでは、エラー チェックについてあまり触れませんでした。サンプルならこれで構いませんが、実際のプラグインを作成する場合は、エラーをチェックする必要があります。
ほとんどのメソッドは、オプションの最終引数を取ります。この引数は、ステータスの戻り値が保存されている 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) はエラーになります。