Tengo las siguientes API:Java ruptura API
public interface MyApi {
/**
* Performs some stuff.
* @throws MyException if condition C1
*/
public void method() throws MyException;
}
ahora estoy realizando la siguiente modificación en mi implementación de la API
public class MyApiImpl {
public void method() throws MyException {
if (C1) {
throw new MyException("c1 message");
}
...
}
}
se sustituye por:
public class MyApiImpl {
public void method() throws MyException {
if (C1) {
throw new MyException("c1 message");
} else if (c2) {
throw new MyException("c2 message");
}
...
}
}
¿Te considerar esto como una rotura API?
El código del cliente aún se compilará, pero el contrato de método definido por el API javadoc ya no se respeta, ya que MyExcepiton es lanzado por una "nueva" condición.
Si solo se actualiza el archivo jar de la API, la aplicación del cliente seguirá funcionando pero, dependiendo de la forma en que los clientes capten la excepción, el comportamiento de la aplicación puede cambiar mucho.
¿Cuál es su punto de vista sobre eso?