나는 다음과 같은 API 있습니다 :자바 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 파손이라고 생각하십니까?
클라이언트의 코드는 계속 컴파일되지만 API javadoc에 정의 된 메소드 계약은 MyExcepiton이 "새"조건에 의해 throw되므로 더 이상 존중되지 않습니다.
내 API jar 파일 만 업데이트되는 경우에도 클라이언트 응용 프로그램은 작동하지만 클라이언트가 예외를 잡는 방식에 따라 응용 프로그램 동작이 많이 바뀔 수 있습니다.
당신의 관점은 무엇입니까?