This Article 
 Bibliographic References 
 Add to: 
Advanced Exception Handling Mechanisms
September 2000 (vol. 26 no. 9)
pp. 820-836

Abstract—It is no longer possible to consider exception handling as a secondary issue in language design, or even worse, a mechanism added after the fact via a library approach. Exception handling is a primary feature in language design and must be integrated with other major features, including advanced control flow, objects, coroutines, concurrency, real-time, and polymorphism. Integration is crucial as there are both obvious and subtle interactions between exception handling and other language features. Unfortunately, many exception handling mechanisms work only with a subset of the features and in the sequential domain. A framework for a comprehensive, easy to use, and extensible exception handling mechanism is presented for a concurrent, object-oriented environment. The environment includes language constructs with separate execution stacks, e.g., coroutines and tasks, so the exception environment is significantly more complex than the normal single-stack situation. The pros and cons of various exception features are examined, along with feature interaction with other language mechanisms. Both exception termination and resumption models are examined in this environment, and previous criticisms of the resumption model, a feature commonly missing in modern languages, are addressed.

[1] P.A. Buhr, G. Ditchfield, R.A. Stroobosscher, B.M. Younger, and C.R. Zarnke, “$\mu$C++: Concurrency in the Object-Oriented Language C++,” Software—Practice and Experience, vol. 22, no. 2, pp. 137–172, Feb. 1992.
[2] J. Goodenough, “Exception Handling: Issues and Proposed Notation,” Comm. ACM, Vol. 18, No. 12, pp. 683–696, 1975.
[3] Intermetrics, Inc., Annotated Ada Reference Manual, Int'l standard, ed. V 6.0., Dec. 1994.
[4] L. Cardelli, J. Donahue, L. Glassman, M. Jordan, B. Kalsow, and G. Nelson, “Modula-3 Report,” Technical Report 31, Systems Research Center, Palo Alto, Calif., Aug. 1988.
[5] B. Stroustrup, The C++ Programming Language. third ed. Addison-Wesley, 1997.
[6] S. Yemini, D. Berry, “A Modular Verifiable Exception-Handling Mechanism,” ACM Trans. Programming Languages and Systems, Vol. 7, No. 2, pp. 213–243, Apr. 1985.
[7] International Business Machines, OS and DOS PL/I Reference Manual. first ed., Sept. 1981.
[8] M.D. MacLaren, “Exception Handling in PL/I,” Proc. ACM Conf. Language Design for Reliable Software, vol. 12, no. 3, pp. 101–104, Mar. 1977.
[9] P.A. Buhr, “Are Safe Concurrency Libraries Possible?,” Comm. Assoc. of Computing Machinery, vol. 38, no. 2, pp. 117–120, Feb. 1995.
[10] R. Milner and M. Tofte, Commentary on Standard ML. Cambridge, Mass.: MIT Press, 1991.
[11] J. Gosling, B. Joy, and G. Steele, The Java Language Specification, Addison-Wesley, Reading, Mass., 1996.
[12] J.G. Mitchell, W. Maybury, and R. Sweet, “Mesa Language Manual,” Technical Report, CSL–79–3, Xerox Research Center, Palo Alto, Apr. 1979.
[13] N. Gehani, “Exceptional C or C with Exceptions,” Software–Practice and Experience, vol. 22, no. 10, pp. 827-48, 1992.
[14] B. Meyer, Eiffel: The Language, Prentice Hall, Upper Saddle River, N.J., 1992.
[15] S.J. Drew and K.J. Gough, “Exception Handling: Expecting the Unexpected,” Computer Languages, vol. 20, no. 2, May 1994.
[16] B.H. Liskov and A. Snyder, “Exception Handling in CLU,” IEEE Trans. Software Eng., vol. 5, no. 6, pp. 546–558, Nov. 1979.
[17] B. Stroustrup, The Design and Evolution of C++. Addison Wesley, 1994.
[18] P.A. Buhr, H.I. Macdonald, and C.R. Zarnke, “Synchronous and Asynchronous Handling of Abnormal Events in the$\mu$System,” Software—Practice and Experience, vol. 22, no. 9, pp. 735–776, Sept. 1992.
[19] P.A. Buhr and R.A. Stroobosscher, “$\mu$C++Annotated Reference Manual, version 4.7,” technical report, Dept. of Computer Science, Univ. of Waterloo, Ontario, Can., Aug. 1999. fttp:// .
[20] T.A. Cargill, “Does C++Really Need Multiple Inheritance?,” Proc. Advanced Computing Systems Assoc. (USENIX) Conf. C++, pp. 315–323, Apr. 1990.
[21] A. Koenig and B. Stroustrup, “Exception Handling for C++,” J. Object-Oriented Programming, pp. 16–33, July 1990.
[22] W.Y.R. Mok, “Concurrent Abnormal Event Handling Mechanisms,” masters thesis, Univ. of Waterloo, Waterloo, Ontario, Canada, N2L 3G1, Sept. 1997. fttp:// .
[23] L.J. Kenah, R.E. Goldenberg, and S.F. Bate, VAX/VMS Internals and Data Structures, Version 4.4. Digital Press, 1988.
[24] J.L. Knudsen, “Exception Handling—A Static Approach,” Software—Practice and Experience, vol. 14, no. 5, pp. 429–449, May 1984.
[25] J.L. Knudsen, “Better Exception Handling in Block Structured Systems,” IEEE Software Eng., vol. 4, no. 3, pp. 40–49, May 1987.
[26] G. Motet, A. Mapinard, and J.C. Geoffroy, Design of Dependable Ada Software. Prentice Hall, 1996.
[27] R.D. Tennent, “Language Design Methods Based on Semantic Principles,” Acta Infomatica, vol. 8, no. 2, pp. 97–112, 1977. reprinted in Tutorial: Programming Language Design, A.I. Wasserman ed., CS Press, 1980.
[28] O.L. Madsen, B. Møller-Pedersen, and K. Nygaard, Object-Oriented Programming in the BETA Programming Language. Addison-Wesley, 1993.
[29] H. Hecht and M. Hecht,“Software reliability in the system context,” IEEE Trans. on Software Engineering, vol. 12, no. 1, pp. 51-58, Jan. 1986.
[30] J. Lang and D.B. Stewart, “A Study of the Applicability of Existing Exception-Handling Techniques to Component-Based Real-Time Software Technology,” ACM Trans. Programming Languages and Systems, vol. 20, no. 2, pp. 274-301, Mar. 1998.
[31] “Real Time for Java Experts Group,” Real Time Specification for Java (Draft), Version 0.8.1, Sept. 1999. http:/
[32] Tutorial: Programming Language Design, A.I. Wasserman ed., CS Press, 1980.

Index Terms:
Exception handling, robustness, termination, resumption, concurrent, interrupts, object-oriented.
Peter A. Buhr, W.Y. Russell Mok, "Advanced Exception Handling Mechanisms," IEEE Transactions on Software Engineering, vol. 26, no. 9, pp. 820-836, Sept. 2000, doi:10.1109/32.877844
Usage of this product signifies your acceptance of the Terms of Use.