ho le seguenti API:API Java pausa
public interface MyApi {
/**
* Performs some stuff.
* @throws MyException if condition C1
*/
public void method() throws MyException;
}
ora sto eseguendo la seguente modifica nella mia implementazione dell'API
public class MyApiImpl {
public void method() throws MyException {
if (C1) {
throw new MyException("c1 message");
}
...
}
}
è sostituito dal seguente:
public class MyApiImpl {
public void method() throws MyException {
if (C1) {
throw new MyException("c1 message");
} else if (c2) {
throw new MyException("c2 message");
}
...
}
}
Ti consideri questo come una rottura di API?
Il codice del client verrà comunque compilato, ma il contratto del metodo definito dall'API javadoc non è più rispettato poiché MyExcepiton viene generato da una condizione "nuova".
Se solo il mio file jar API viene aggiornato, l'applicazione client sarà ancora lavorare, ma a seconda del modo in cui i clienti intercettare l'eccezione il comportamento dell'applicazione può cambiare molto.
Qual è il tuo punto di vista al riguardo?