如果我有一个使用semantic versioning管理的公共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);
}
}
是否应该增加语义版本的主要值,因为这种变化可能会破坏?它肯定会打破上面的异常处理程序,所以看起来像是一个突破性的变化。