A review on exception analysis

Context: Exception handling has become popular in most major programming languages, including Ada, C++, Java, and ML. Since exception handling was introduced in programming languages, there have been various kinds of exception analyses, which analyze exceptional behavior of programs statically or dynamically. Exception analyses have also been applied to various software engineering tasks such as testing, slicing, verification and visualization.Objective: This paper aims at providing a comprehensive view of studies on exception analysis. We conducted a review on exception analysis to identify and classify the studies.Method: We referred to the literature review method, and selected a comprehensive set of 87 papers on exception analysis from 515 papers published in journals and conference proceedings. The categorization and classification were done according to the research questions regarding to when they analyze, what they analyze, how to analyze, and applications of exception analysis.Results: We first identify three categories of static exception analysis and two categories of dynamic exception analysis together with the main applications of the exception analyses. We also discuss the main concepts, research methods used and major contributions of the studies on exception analysis.Conclusion: We have provided the comprehensive review of exception analysis. To the best of our knowledge, this is the first comprehensive review on exception analysis. As a further work, it would be interesting to see how the existing exception analysis techniques reviewed in this paper can be applied to other programming languages with exception handling mechanism, such as C#, Scala, and Eiffel, which have been rarely explored.

[1]  Yannis Smaragdakis,et al.  Exception analysis and points-to analysis: better together , 2009, ISSTA.

[2]  Frank Tip,et al.  A survey of program slicing techniques , 1994, J. Program. Lang..

[3]  Jong-Deok Choi,et al.  Efficient and precise modeling of exceptions for the analysis of Java programs , 1999, PASTE '99.

[4]  François Pessaux,et al.  Type-based analysis of uncaught exceptions , 2000, TOPL.

[5]  Willem Visser,et al.  Variably interprocedural program analysis for runtime error detection , 2007, ISSTA '07.

[6]  Shujuan Jiang,et al.  Fault localization and repair for Java runtime exceptions , 2009, ISSTA.

[7]  Alan Snyder,et al.  Exception Handling in CLU , 1979, IEEE Transactions on Software Engineering.

[8]  Gregg Rothermel,et al.  System-dependence-graph-based slicing of programs with arbitrary interprocedural control flow , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[9]  Shujuan Jiang,et al.  A Debugging Approach for Java Runtime Exceptions Based on Program Slicing and Stack Traces , 2010, 2010 10th International Conference on Quality Software.

[10]  Byeong-Mo Chang,et al.  Estimating Exception-Induced Control Flow for Java , 2001, APLAS.

[11]  John B. Goodenough,et al.  Exception handling: issues and a proposed notation , 1975, CACM.

[12]  Toshio Nakatani,et al.  EDO: Exception-directed optimization in java , 2006, TOPL.

[13]  Alessandro Orso,et al.  Automated support for development, maintenance, and testing in the presence of implicit flow control , 2004, Proceedings. 26th International Conference on Software Engineering.

[14]  Brian A. Wichmann,et al.  Rationale for the design of the Ada programming language , 1979, SIGP.

[15]  Giuliano Antoniol,et al.  An Approach for Search Based Testing of Null Pointer Exceptions , 2011, 2011 Fourth IEEE International Conference on Software Testing, Verification and Validation.

[16]  Chen Fu,et al.  Robustness testing of Java server applications , 2005, IEEE Transactions on Software Engineering.

[17]  Kwangkeun Yi,et al.  An Abstract Interpretation for Estimating Uncaught Exceptions in Standard ML Programs , 1998, Sci. Comput. Program..

[18]  Carl F. Schaefer,et al.  Static analysis of exception handling in Ada , 1993, Softw. Pract. Exp..

[19]  David B. Stewart,et al.  A study of the applicability of existing exception-handling techniques to component-based real-time software technology , 1998, TOPL.

[20]  Carlos José Pereira de Lucena,et al.  Unveiling and taming liabilities of aspects in the presence of exceptions: A static analysis based approach , 2011, Inf. Sci..

[21]  Hanspeter Mössenböck,et al.  Trace transitioning and exception handling in a trace-based JIT compiler for java , 2014, TACO.

[22]  Pearl Brereton,et al.  Lessons from applying the systematic literature review process within the software engineering domain , 2007, J. Syst. Softw..

[23]  Fernando Castor,et al.  Towards Agile Testing of Exceptional Behavior , 2011, 2011 Fifth Latin-American Symposium on Dependable Computing Workshops.

[24]  Susan Horwitz,et al.  Slicing java programs that throw and catch exceptions , 2003, PPoPP 2003.

[25]  Rudolf Ferenc,et al.  Runtime Exception Detection in Java Programs Using Symbolic Execution , 2014, Acta Cybern..

[26]  Armin Biere,et al.  Exhaustive Testing of Exception Handlers with Enforcer , 2006, FMCO.

[27]  Shen Yi,et al.  Binary Software Vulnerability Analysis Based on Bidirectional-Slicing , 2012, 2012 Second International Conference on Instrumentation, Measurement, Computer, Communication and Control.

[28]  Kwangkeun Yi,et al.  An uncaught exception analysis for Java , 2004, J. Syst. Softw..

[29]  Sebastian G. Elbaum,et al.  Amplifying Tests to Validate Exception Handling Code: An Extended Study in the Mobile Application Domain , 2014, TSEM.

[30]  Barbara G. Ryder,et al.  A Static Study of Java Exceptions Using JESP , 2000, CC.

[31]  Jurriaan Hage,et al.  Type-based Exception Analysis for Non-strict Higher-order Functional Languages with Imprecise Exception Semantics , 2015, PEPM.

[32]  Gang Tan,et al.  Finding bugs in exceptional situations of JNI programs , 2009, CCS.

[33]  Jeffrey S. Foster,et al.  Tracking down Exceptions in Standard ML Programs , 1998 .

[34]  Paulo Marques,et al.  Exception Handling: A Field Study in Java and .NET , 2007, ECOOP.

[35]  Hina Shah,et al.  Visualization of exception handling constructs to support program understanding , 2008, SoftVis '08.

[36]  Amey Karkare,et al.  Heap reference analysis using access graphs , 2006, ACM Trans. Program. Lang. Syst..

[37]  Uirá Kulesza,et al.  A catalogue of bug patterns for exception handling in aspect-oriented programs , 2008 .

[38]  Cristina V. Lopes,et al.  A study on exception detection and handling using aspect-oriented programming , 2000, Proceedings of the 2000 International Conference on Software Engineering. ICSE 2000 the New Millennium.

[39]  Christof Fetzer,et al.  Automatic detection and masking of nonatomic exception handling , 2003, IEEE Transactions on Software Engineering.

[40]  Bjarne Stroustrup,et al.  Exception Handling for C++ , 1990, C++ Conference.

[41]  Vikram S. Adve,et al.  LLVM: a compilation framework for lifelong program analysis & transformation , 2004, International Symposium on Code Generation and Optimization, 2004. CGO 2004..

[42]  Barbara G. Ryder,et al.  Complexity of Points-To Analysis of Java in the Presence of Exceptions , 2001, IEEE Trans. Software Eng..

[43]  István Majzik,et al.  Modeling and Analysis of Exception Handling by Using UML Statecharts , 2004, FIDJI.

[44]  J. D. Ichbiah,et al.  Preliminary Ada reference manual , 1979, SIGP.

[45]  Byeong-Mo Chang,et al.  Constructing Control Flow Graph for Java by Decoupling Exception Flow from Normal Flow , 2004, ICCSA.

[46]  K. Yi,et al.  Exception analysis for multithreaded Java programs , 2001, Proceedings Second Asia-Pacific Conference on Quality Software.

[47]  Jun Wei,et al.  Static Detection of Bugs Caused by Incorrect Exception Handling in Java Programs , 2011, 2011 11th International Conference on Quality Software.

[48]  Marieke Huisman,et al.  Sound Control-Flow Graph Extraction for Java Programs with Exceptions , 2012, SEFM.

[49]  Gail E. Kaiser,et al.  Backstop: a tool for debugging runtime errors , 2008, SIGCSE '08.

[50]  Baowen Xu,et al.  An approach to analyzing recursive programs with exception handling constructs , 2006, SIGP.

[51]  David Hovemeyer,et al.  Finding more null pointer bugs, but not too many , 2007, PASTE '07.

[52]  Alexander Aiken,et al.  Program Analysis Using Mixed Term and Set Constraints , 1997, SAS.

[53]  George C. Necula,et al.  Exceptional situations and program reliability , 2008, TOPL.

[54]  Nick Benton,et al.  Semantics of an effect analysis for exceptions , 2007, TLDI '07.

[55]  Jong-Deok Choi,et al.  Optimizing Java Programs in the Presence of Exceptions , 2000, ECOOP.

[56]  Peter J. Stuckey,et al.  Exception analysis for non-strict languages , 2002, ICFP '02.

[57]  Martin Monperrus,et al.  Exception handling analysis and transformation using fault injection: Study of resilience against unanticipated exceptions , 2015, Inf. Softw. Technol..

[58]  Baowen Xu,et al.  A New Mutation Analysis Method for Testing Java Exception Handling , 2009, 2009 33rd Annual IEEE International Computer Software and Applications Conference.

[59]  Shujuan Jiang,et al.  An approach to automatic testing exception handling , 2005, SIGP.

[60]  Byeong-Mo Chang,et al.  An Exception Monitoring System for Java , 2004, RISE.

[61]  Simone Hanazumi,et al.  Testing Java Exceptions: An Instrumentation Technique , 2014, 2014 IEEE 38th International Computer Software and Applications Conference Workshops.

[62]  Yannis Smaragdakis,et al.  Efficient and Effective Handling of Exceptions in Java Points-to Analysis , 2013, CC.

[63]  Wei Li,et al.  Fault Localization for Null Pointer Exception Based on Stack Trace and Program Slicing , 2012, 2012 12th International Conference on Quality Software.

[64]  Anup K. Ghosh,et al.  An approach to testing COTS software for robustness to operating system exceptions and errors , 1999, Proceedings 10th International Symposium on Software Reliability Engineering (Cat. No.PR00443).

[65]  Westley Weimer,et al.  Automatic documentation inference for exceptions , 2008, ISSTA '08.

[66]  George C. Necula,et al.  Mining Temporal Specifications for Error Detection , 2005, TACAS.

[67]  François Pottier,et al.  A constraint-based approach to guarded algebraic data types , 2007, TOPL.

[68]  Cecília M. F. Rubira,et al.  Aspectizing Exception Handling: A Quantitative Study , 2006, Advanced Topics in Exception Handling Techniques.

[69]  Martin P. Robillard,et al.  Static analysis to support the evolution of exception structure in object-oriented systems , 2003, TSEM.

[70]  George Candea,et al.  Automatic failure-path inference: a generic introspection technique for Internet applications , 2003, Proceedings the Third IEEE Workshop on Internet Applications. WIAPP 2003.

[71]  Gogul Balakrishnan,et al.  Interprocedural Exception Analysis for C++ , 2011, ECOOP.

[72]  Byeong-Mo Chang,et al.  Visualization of exception propagation for Java using static analysis , 2002, Proceedings. Second IEEE International Workshop on Source Code Analysis and Manipulation.

[73]  Chen Fu,et al.  Navigating error recovery code in Java applications , 2005, eclipse '05.

[74]  Kwangkeun Yi,et al.  A cost-effective estimation of uncaught exceptions in Standard ML programs , 2002, Theor. Comput. Sci..

[75]  Hina Shah,et al.  Why do developers neglect exception handling? , 2008, WEH '08.

[76]  Shujuan Jiang,et al.  An analysis approach for testing exception handling programs , 2007, SIGP.

[77]  Jonathan Aldrich,et al.  Practical Exception Specifications , 2006, Advanced Topics in Exception Handling Techniques.

[78]  Chen Fu,et al.  Exception-Chain Analysis: Revealing Exception Handling Architecture in Java Server Applications , 2007, 29th International Conference on Software Engineering (ICSE'07).

[79]  Joseph Robert Horgan,et al.  Dynamic program slicing , 1990, PLDI '90.

[80]  Ken Arnold,et al.  The Java Programming Language , 1996 .

[81]  Tibor Gyimóthy,et al.  Dynamic slicing of Java bytecode programs , 2005, Fifth IEEE International Workshop on Source Code Analysis and Manipulation (SCAM'05).

[82]  Sergej Alekseev Java debugging laboratory for automatic generation and analysis of trace data , 2007 .

[83]  Yuqin Shi,et al.  Improving the Preciseness of Dependence Analysis Using Exception Analysis , 2006, 2006 15th International Conference on Computing.

[84]  John A. Clark,et al.  Automated test‐data generation for exception conditions , 2000 .

[85]  Mark Weiser,et al.  Program Slicing , 1981, IEEE Transactions on Software Engineering.

[86]  Henryk Krawczyk,et al.  A Model of Exception Propagation in Distributed Applications , 2005, PPAM.

[87]  Tao Xie,et al.  Mining exception-handling rules as sequence association rules , 2009, 2009 IEEE 31st International Conference on Software Engineering.

[88]  Tao Wang,et al.  Dynamic slicing on Java bytecode traces , 2008, TOPL.

[89]  Peter J. Clarke,et al.  Measurement of exception-handling code: An exploratory study , 2012, 2012 5th International Workshop on Exception Handling (WEH).

[90]  Nélio Cacho,et al.  eFlowMining: An Exception-Flow Analysis Tool for .NET Applications , 2011, 2011 Fifth Latin-American Symposium on Dependable Computing Workshops.

[91]  Anant Agarwal,et al.  TraceBack: first fault diagnosis by reconstruction of distributed control flow , 2005, PLDI '05.

[92]  Yansheng Lu,et al.  Improving the robustness and reliability of object-oriented programs through exception analysis and testing , 2005, 10th IEEE International Conference on Engineering of Complex Computer Systems (ICECCS'05).

[93]  Saurabh Sinha,et al.  Analysis and Testing of Programs with Exception Handling Constructs , 2000, IEEE Trans. Software Eng..

[94]  Cecília M. F. Rubira,et al.  A comparative study of exception handling mechanisms for building dependable object-oriented software , 2001, J. Syst. Softw..

[95]  Matthew B. Dwyer,et al.  A new foundation for control dependence and slicing for modern program structures , 2005, TOPL.

[96]  Carlos José Pereira de Lucena,et al.  Assessing the Impact of Aspects on Exception Flows: An Exploratory Study , 2008, ECOOP.

[97]  Matthew Might,et al.  Pruning, Pushdown Exception-Flow Analysis , 2014, 2014 IEEE 14th International Working Conference on Source Code Analysis and Manipulation.

[98]  Simone Hanazumi,et al.  Exercising Java Exceptions Using Java Pathfinder and Program Instrumentation , 2014, ICCSA.