Abstract
Many programming languages provide exceptions as a structured way for detecting and recovering from abnormal conditions. However, using exceptions properly is non-trivial. Programmers are often careless when handling exceptions, and exception related mistakes are common in software products. We present a technique for verifying that exceptions are used in a safe way. This technique integrates static analysis with model checking to visit all possible exception-raising execution paths. To demonstrate the potential utility of our approach, we applied it to two open source Java applications.
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
The fizmez web server. see: http://fizmez.com/
Kopi Java open source compiler. see: http://www.dms.at/kopi
Arnold, K., Gosling, J., Holmes, D.: The Java Programming Language. Addison-Wesley Longman Publishing Co., Inc., Boston (2000)
Corbett, J.C., Dwyer, M.B., Hatcliff, J., Laubach, S., Păsăreanu, C.S., Robby, Hongjun, Z.: Bandera: extracting finite-state models from Java source code. In: International Conference on Software Engineering, pp. 439–448 (2000)
Drossopoulou, S., Valkevych, T., Eisenbach, S.: Java type soundness revisited. Technical report, Imperial College (2000)
Elonen, J.: The nanohttpd http server. see: elonen.iki.fi/code/nanohttpd
Flanagan, C., Leino, K.R.M., M., Lillibridge, M., Nelson, G., Saxe, J.B., Stata, R.: Extended static checking for java. In: PLDI, pp. 234–245 (2002)
Goodwin, P.: Exception patterns. See: http://www.c2.com/cgi/wiki?ExceptionPatterns
Huth, M., Ryan, M.: Logic in Computer Science: Modelling and Reasoning about Systems, 2nd edn., Cambridge (2004)
Jo, J.-W., Chang, B.-M., Yi, K., Choe, K.-M.: An uncaught exception analysis for Java. Journal of Systems and Software 72(1), 59–69 (2004)
Leavens, G.T., Baker, A.L., Ruby, C.: JML: A notation for detailed design. In: Kilov, H., Rumpe, B., Simmonds, I. (eds.) Behavioral Specifications of Businesses and Systems, pp. 175–188. Kluwer Academic Publishers, Dordrecht (1999)
Leino, K.R.M., Schulte, W.: Exception safety for C#. In: SEFM, pp. 218–227 (2004)
Maxion, R.A., Olszewski, R.T.: Improving software robustness with dependability cases. In: Digest of Papers. Twenty-Eighth Annual International Symposium on Fault-Tolerant Computing, pp. 346–355 (1998)
Robby, Dwyer, M.B., Hatcliff, J.: Bogor: an extensible and highly-modular software model checking framework. In: ESEC / SIGSOFT FSE, pp. 267–276 (2003)
Robillard, M.P., Murphy, G.C.: Static analysis to support the evolution of exception structure in object-oriented systems. ACM Trans. Softw. Eng. Methodol. 12(2), 191–221 (2003)
Stroustrup, B.: The C++ Programming Language. Addison-Wesley, Reading (1997)
Visser, W., Havelund, K., Brat, G., Park, S.: Model checking programs. In: ASE 2000: Proceedings of the The Fifteenth IEEE International Conference on Automated Software Engineering (ASE 2000), Washington, DC, USA, p. 3. IEEE Computer Society, Los Alamitos (2000)
Weimer, W., Necula, G.C.: Finding and preventing run-time error handling mistakes. In: OOPSLA, pp. 419–431 (2004)
Weiser, M.: Program slicing. IEEE Trans. Software Eng. 10(4), 352–357 (1984)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2006 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Li, X., Hoover, H.J., Rudnicki, P. (2006). Towards Automatic Exception Safety Verification. In: Misra, J., Nipkow, T., Sekerinski, E. (eds) FM 2006: Formal Methods. FM 2006. Lecture Notes in Computer Science, vol 4085. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11813040_27
Download citation
DOI: https://doi.org/10.1007/11813040_27
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-37215-8
Online ISBN: 978-3-540-37216-5
eBook Packages: Computer ScienceComputer Science (R0)