Advanced Exception Handling Mechanisms

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]  Ruth E. Goldenberg,et al.  VAX/VMS internals and data structures : version 4.4 , 1988 .

[2]  Daniel M. Berry,et al.  A modular verifiable exception handling mechanism , 1985, TOPL.

[3]  W. Y. Russell Mok Concurrent abnormal event handling mechanisms , 1997 .

[4]  M. Donald MacLaren,et al.  Exception handling in PL/I , 1977, Language Design for Reliable Software.

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

[6]  Robin Milner,et al.  Commentary on standard ML , 1990 .

[7]  Ole Lehrmann Madsen,et al.  Object-oriented programming in the BETA programming language , 1993 .

[8]  Peter A. Buhr,et al.  Synchronous and asynchronous handling of abnormal events in the μsystem , 1992, Softw. Pract. Exp..

[9]  Harald Winroth,et al.  Exception handling in C , 1993 .

[10]  Kenneth E. Iverson,et al.  A programming language , 1899, AIEE-IRE '62 (Spring).

[11]  Jørgen Lindskov Knudsen Exception handling—A static approach , 1984, Softw. Pract. Exp..

[12]  Jørgen Lindskov Knudsen Better Exception-Handling in Block-Structured Systems , 1987, IEEE Software.

[13]  Thomas A. Cargill Does C++ Really Need Multiple Inheritance? , 1990, C++ Conference.

[14]  Bertrand Meyer,et al.  Eiffel: The Language , 1991 .

[15]  S. Tucker Taft,et al.  Information technology — Programming Languages — Ada , 2001 .

[16]  Narain H. Gehani,et al.  Exceptional C or C with exceptions , 1992, Softw. Pract. Exp..

[17]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

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

[19]  Gilles Motet,et al.  Design of dependable Ada software , 1995, BCS practitioner series.

[20]  Myron Hecht,et al.  Software reliability in the system context , 1986, IEEE Transactions on Software Engineering.

[21]  Susan Horwitz,et al.  The first-course conundrum, why change? , 1995, CACM.

[22]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[23]  K. John Gough,et al.  Exception Handling: Expecting the Unexptected , 1994, Comput. Lang..

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

[25]  Luca Cardelli,et al.  Modula-3 Report. , 1988 .

[26]  Peter A. Buhr Are Safe Concurrency Libraries Possible? , 1995, Commun. ACM.

[27]  Peter A. Buhr,et al.  μC++: Concurrency in the object‐oriented language C++ , 1992, Softw. Pract. Exp..

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

[29]  Bjarne Stroustrup,et al.  The Design and Evolution of C , 1994 .