Toward Modular Verifiable Exception Handling

Recognizing that an error condition is an intrinsic part of the abstract type to which the operation that detects the condition belongs, an attempt is made to specify and implement error condition detection and handling within the framework of the Alphard form, a construct for encapsulation of data type specification and implementation. The essence of the problem is this: while error condition detection is done by the operation in the form, only the user of the type can determine the meaning of the condition with respect to the way the type is used. Thus, the user must be able to specify the handler. Unfortunately, programming the handler often requires access to encapsulated implementation details which are hidden from the user. After discussing the general issues of exception handling, modularity, and abstract data types, this paper proposes a solution for one category of exceptions, namely errors. Specifically an externally visible condition name is the link between an error's occurrence and some externally visible but internally programmed handler for it. Issues raised by this partial solution, including those of proof rules, are discussed.

[1]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

[2]  Stephen N. Zilles,et al.  Specification techniques for data abstractions , 1975 .

[3]  Ellis Horowitz,et al.  Some extensions to algebraic specifications , 1977 .

[4]  C. A. R. Hoare,et al.  Procedures and parameters: An axiomatic approach , 1971, Symposium on Semantics of Algorithmic Languages.

[5]  Robin Milner,et al.  An Algebraic Definition of Simulation Between Programs , 1971, IJCAI.

[6]  Hans H. Kron,et al.  Programming-in-the-Large Versus Programming-in-the-Small , 1975 .

[7]  David Lorge. Parnas Response to detected errors in well-structured programs , 1972 .

[8]  John V. Guttag,et al.  The specification and application to programming of abstract data types. , 1975 .

[9]  Stephen N. Zilles,et al.  Programming with abstract data types , 1974 .

[10]  Mary Shaw,et al.  Abstraction and Verification in Alphard: Introduction to Language and Methodology , 1976 .

[11]  J. J. Horning,et al.  Report on the programming language Euclid , 1977, SIGP.

[12]  Jacob T. Schwartz,et al.  On programming : an interim report on the SETL Project , 1973 .

[13]  Joseph A. Goguen,et al.  Abstract Errors for Abstract Data Types , 1977, Formal Description of Programming Concepts.

[14]  David Lorge Parnas,et al.  A technique for software module specification with examples , 1972, CACM.

[15]  J. M. Noble,et al.  The control of exceptional conditions in PL/1 object programs , 1968, IFIP Congress.

[16]  Glenford J Myers,et al.  Reliable software through composite design , 1975 .

[17]  John B. Goodenough,et al.  Structured exception handling , 1975, POPL '75.

[18]  Mary Shaw,et al.  An introduction to the construction and verification of Alphard programs , 1976, ICSE '76.

[19]  James J. Horning,et al.  A Proof Rule for Euclid Procedures , 1977, Formal Description of Programming Concepts.

[20]  Joseph Wilson Thomas Module interconnection in programming systems supporting abstraction. , 1976 .

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