我有以下 API:
public interface MyApi {
/**
* Performs some stuff.
* @throws MyException if condition C1
*/
public void method() throws MyException;
}
我现在在我的 API 实现中执行以下修改
public class MyApiImpl {
public void method() throws MyException {
if (C1) {
throw new MyException("c1 message");
}
...
}
}
替换为:
public class MyApiImpl {
public void method() throws MyException {
if (C1) {
throw new MyException("c1 message");
} else if (c2) {
throw new MyException("c2 message");
}
...
}
}
您认为这是 API 损坏吗?
客户端的代码仍将编译,但 API javadoc 定义的方法协定不再受到尊重,因为 MyExcepiton 是由“新”条件引发的。
如果只更新我的 API jar 文件,客户端应用程序仍然可以工作,但取决于客户端捕获异常的方式,应用程序行为可能会发生很大变化。
你对此有何看法?