Project

General

Profile

バグ #3703

RTObject_implクラスのget_service_profile関数で適当なサービスプロファイル名を入力してもInvalidParameterの例外が発生しない問題

Added by n-miyamoto about 4 years ago. Updated over 3 years ago.

Status:
終了
Priority:
通常
Assignee:
Target version:
-
Start date:
11/04/2016
Due date:
% Done:

100%

Estimated time:

Description

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;
  }

History

#1 Updated by n-miyamoto about 4 years ago

  • Status changed from 新規 to 解決
  • Assignee set to n-miyamoto
  • % Done changed from 0 to 100

SdoServiceAdminクラスのgetServiceProviderProfile内で例外が発生する部分を以下のように修正

throw new SDOPackage::InvalidParameter();
→
throw SDOPackage::InvalidParameter();

テストを実行した結果、特に問題は発生しませんでした。

・ポインタを throw するならポインタかポインタの参照でキャッチすべき
 オブジェクトを throw するならオブジェクトかその参照でキャッチすべき
・例外は throw に渡されたオブジェクトのコピーが catch 節に渡され、
 catch 節の } で解体される
・値で受けるより参照で受けたほうが(たいていの場合) RVO が働いて
 コピー回数が1回減るのでお得

#2 Updated by n-ando over 3 years ago

  • Status changed from 解決 to 終了

Also available in: Atom PDF