  The implementation of complex software systems usually depends on low-level
frameworks or third-party libraries. During their evolution, the APIs adding
and removing behaviors may cause unexpected compatibility problems. So,
precisely analyzing and constructing the framework/ library's API lifecycle
model is of great importance. Existing works have proposed the API
existence-changing model for defect detection, while not considering the
influence of semantic changes in APIs. In some cases, developers will not
remove or deprecate APIs but modify their semantics by adding, removing, or
modifying their exception-thrown code, which may bring potential defects to
upper-level code. Therefore, besides the API existence model, it is also
necessary for developers to be concerned with the exception-related code
evolution in APIs, which requires the construction of exception-aware API
lifecycle models for framework/library projects. To achieve automatic
exception-aware API lifecycle model construction, this paper adopts a static
analysis technique to extract exception summary information in the framework
API code and adopts a multi-step matching strategy to obtain the changing
process of exceptions. Then, it generates exception-aware API lifecycle models
for the given framework/library project. With this approach, the API lifecycle
extraction tool, JavaExP, is implemented, which is based on Java bytecode
analysis. Compared to the state-of-the-art tool, JavaExP achieves both a higher
F1 score (+60%) and efficiency (+7x), whose precision of exception matching and
changing results is 98%. Compared to the exception-unaware API lifecycle
modeling on 60 versions, JavaExp can identify 18% times more API changes. Among
the 75,433 APIs under analysis, 20% of APIs have changed their
exception-throwing behavior at least once after API introduction, which may
bring many hidden compatibility issues.
