セマンティック バージョニングを使用して管理されているパブリック 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);
}
}
この変更は壊れている可能性があるため、セマンティック バージョンのメジャー値をインクリメントする必要がありますか? それは確かに上記の例外ハンドラーを壊すので、重大な変更のようです。