Return
Exceptions Can Be Nested: An Exploratory Study on Nested Exceptions in Java Crashes
DOI:10.1002/smr.70099.png)
Abstract
En 中文
Crash reports can be used to reproduce a crash scenario and to localize a fault. A nested exception report is a type of crash report with two or more exceptions, where one exception is triggered by another. The complexity of nested exception reports has primarily hindered the research progress of fault localization and crash reproduction. In this paper, we conduct an exploratory study on nested exceptions in Java programs by answering five research questions for the root cause of nested exceptions, including the data scale of nested exceptions, the concerns on nested exceptions, the correlated factors on concerns, the crash scenario of nested exceptions, and the simplification of nested exceptions. To support our study, we collect a dataset of crash reports with nested exceptions, called JCauseCrash dataset, which contains 1368 nested exception reports from 26 Java projects. Our study mainly shows five empirical results on the root cause of nested exceptions in Java programs. Our findings are listed as follows: (1) From the crash reports under evaluation, there are 1368 nested exception reports in the 26 Java projects, accounting for 30.80% of the crash reports (1368/3437); (2) programmers concern on nested exception reports more than non-nested ones; (3) the number of comments in nested exception reports correlates with the lifecycle of crash reports; (4) a parameterized constructor with an object of Throwable and the use of throw keyword highly correlates with the number of nested exception reports; and (5) without modifying the semantics of source code, programmers can simplify complex nested exception reports by eliminating a parameterized constructor with an object of Throwable class in the line of throwing an exception.
Keywords:
crash reproduction
Java constructors
Java programs
nested exceptions
stack traces
Journal
J
IF:
1.8
Papers:
57
Citations:
1.5K

