1

セマンティック バージョニングを使用して管理されているパブリック API がある場合、メソッドがスローする可能性のある例外の種類の変更は重大な変更と見なされますか?

次の例を検討してください。

// API version 1.0.0
public void Method()
{
     // this may throw ThirdPartyComponentException 
     _thirdPartyComponent.SomeMethod();
}

呼び出しコードは次のようになります。

try
{
    _api.Method();
}
catch (ThirdPartyComponentException e)
{
    //some recovery logic
}

の実装がこのAPI.Methodように変更された場合:

// API version ?.?.?
public void Method()
{
    try
    {
        // this may throw ThirdPartyComponentException 
        _thirdPartyComponent.SomeMethod();
    }
    catch (ThirdPartyComponentException e)
    {
        throw new MyApiException(e);
    }
}

この変更は壊れている可能性があるため、セマンティック バージョンのメジャー値をインクリメントする必要がありますか? それは確かに上記の例外ハンドラーを壊すので、重大な変更のようです。

4

0 に答える 0