У меня есть следующий 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 вызывается «новым» условием.
Если обновляется только мой jar-файл API, клиентское приложение все равно будет работать, но в зависимости от того, как клиенты перехватят исключение, поведение приложения может сильно измениться.
Какова ваша точка зрения на это?