操作
バグ #3703
完了RTObject_implクラスのget_service_profile関数で適当なサービスプロファイル名を入力してもInvalidParameterの例外が発生しない問題
開始日:
2016/11/04
期日:
進捗率:
100%
予定工数:
説明
RTObject_implクラスのget_service_profile関数に適当なサービスプロファイル名を入力してもInvalidParameterの例外をスローしない問題を修正する。
おそらく以下の部分でgetServiceProviderProfile関数内がInvalidParameterの例外をスローしても、catch (SDOPackage::InvalidParameter &e)の部分で例外を受け取れていないことが原因
 try
 {
    prof = m_sdoservice.getServiceProviderProfile(id);
 }
 catch (SDOPackage::InvalidParameter &e)
 {
        RTC_ERROR(("InvalidParameter exception: name (%s) is not found", id));
        throw e;
  }
  n-miyamoto さんがほぼ9年前に更新
- ステータス を 新規 から 解決 に変更
 - 担当者 を n-miyamoto にセット
 - 進捗率 を 0 から 100 に変更
 
SdoServiceAdminクラスのgetServiceProviderProfile内で例外が発生する部分を以下のように修正
throw new SDOPackage::InvalidParameter(); → throw SDOPackage::InvalidParameter();
テストを実行した結果、特に問題は発生しませんでした。
・ポインタを throw するならポインタかポインタの参照でキャッチすべき オブジェクトを throw するならオブジェクトかその参照でキャッチすべき ・例外は throw に渡されたオブジェクトのコピーが catch 節に渡され、 catch 節の } で解体される ・値で受けるより参照で受けたほうが(たいていの場合) RVO が働いて コピー回数が1回減るのでお得
操作