Iは、以下のAPIいますJavaはAPIブレーク
public class MyApiImpl {
public void method() throws MyException {
if (C1) {
throw new MyException("c1 message");
} else if (c2) {
throw new MyException("c2 message");
}
...
}
}
があなたの操作を行います。私は今、私のAPIの実装では、以下の修正を行っております
public interface MyApi {
/**
* Performs some stuff.
* @throws MyException if condition C1
*/
public void method() throws MyException;
}
public class MyApiImpl {
public void method() throws MyException {
if (C1) {
throw new MyException("c1 message");
}
...
}
}
が置き換えられますこれをAPI破損と見なしますか?
クライアントのコードはまだコンパイルされますが、MyExcepitonが「新しい」条件によってスローされるため、API javadocで定義されたメソッドコントラクトはもう尊重されません。
APIのjarファイルのみが更新されても、クライアントアプリケーションは引き続き動作しますが、クライアントが例外をキャッチする方法によっては、アプリケーションの動作が大きく変わる可能性があります。
あなたはそれについて何を考えていますか?