Tôi đã API sau:Java API nghỉ
public interface MyApi {
/**
* Performs some stuff.
* @throws MyException if condition C1
*/
public void method() throws MyException;
}
Tôi bây giờ thực hiện việc sửa đổi sau đây trong việc thực hiện API của tôi
public class MyApiImpl {
public void method() throws MyException {
if (C1) {
throw new MyException("c1 message");
}
...
}
}
được thay thế bằng:
public class MyApiImpl {
public void method() throws MyException {
if (C1) {
throw new MyException("c1 message");
} else if (c2) {
throw new MyException("c2 message");
}
...
}
}
Bạn xem xét điều này như là một breakage API?
Mã của khách hàng sẽ vẫn biên dịch nhưng hợp đồng phương thức được xác định bởi javadoc API không còn được tôn trọng vì MyExcepiton bị ném bởi điều kiện "mới".
Nếu chỉ tệp API API của tôi được cập nhật, ứng dụng khách sẽ vẫn hoạt động nhưng tùy thuộc vào cách khách hàng bắt ngoại lệ, hành vi ứng dụng có thể thay đổi rất nhiều.
Quan điểm của bạn về điều đó là gì?