Who is Accountable for Asynchronous Exceptions?

Large parts of today's software systems are devoted to detecting and recovering from failures, making exception handling a critical issue in software development. Concurrent software complicates this issue: most concurrent programming languages require a mechanism to deal with asynchronous exceptions, but because of the diverse design choices underlying each language, no approach fits all situations. We introduce a classification of possible approaches to guide the development of asynchronous exception mechanisms, and we show its applicability by deriving a sound and comprehensible mechanism for SCOOP, an object-oriented programming model for concurrency. We describe the key idea of the mechanism using the accountability framework, which precisely defines the obligations of client and supplier regarding the reporting of exceptions. The framework not only provides the necessary intuition to apply the mechanism correctly, it is also useful to comprehend other approaches.

[1]  Christelle Urtado,et al.  Exception Handling and Asynchronous Active Objects: Issues and Proposal , 2006, Advanced Topics in Exception Handling Techniques.

[2]  Cecília M. F. Rubira,et al.  Fault tolerance in concurrent object-oriented software through coordinated error recovery , 1995, Twenty-Fifth International Symposium on Fault-Tolerant Computing. Digest of Papers.

[3]  Rajeev R. Raje,et al.  Asynchronous Remote Method Invocation (ARMI) Mechanism for Java , 1997, Concurr. Pract. Exp..

[4]  Brian Randell,et al.  Error recovery in asynchronous systems , 1986, IEEE Transactions on Software Engineering.

[5]  Jeannette M. Wing The Avalon C++ programming language (version 0) , 1988 .

[6]  Anand R. Tripathi,et al.  Exception Handling in Agent-Oriented Systems , 2000, Advances in Exception Handling Techniques.

[7]  Anand R. Tripathi,et al.  The guardian model and primitives for exception handling in distributed systems , 2004, IEEE Transactions on Software Engineering.

[8]  Rachid Guerraoui,et al.  Introduction to Reliable and Secure Distributed Programming , 2011 .

[9]  Douglas C. Schmidt,et al.  Pattern-Oriented Software Architecture, Patterns for Concurrent and Networked Objects , 2013 .

[10]  Bertrand Meyer,et al.  A Formal Reference for SCOOP , 2010, LASER Summer School.

[11]  Liuba Shrira,et al.  Promises: linguistic support for efficient asynchronous procedure calls in distributed systems , 1988, PLDI '88.

[12]  Maurice Herlihy,et al.  ARGUS REFERENCE MANUAL , 1987 .

[13]  Richard F. Paige,et al.  Exceptions in Concurrent Eiffel , 2007, J. Object Technol..

[14]  Vaidy S. Sunderam,et al.  Semantic aspects of asynchronous RMI: the RMIX approach , 2004, 18th International Parallel and Distributed Processing Symposium, 2004. Proceedings..

[15]  Bjarne Stroustrup,et al.  The C++ programming language (2nd ed.) , 1991 .

[16]  Piotr Nienaltowski,et al.  Practical framework for contract-based concurrent object-oriented programming , 2007 .

[17]  Simon L. Peyton Jones,et al.  Asynchronous exceptions in Haskell , 2001, PLDI '01.

[18]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

[19]  Heike Wehrheim,et al.  Jass - Java with Assertions , 2001, RV@CAV.

[20]  Akinori Yonezawa,et al.  Exception Handling and Real Time Features in an Object-Oriented Concurrent Language , 1991, Concurrency: Theory, Language, And Architecture.

[21]  Greg Nelson,et al.  Systems programming in modula-3 , 1991 .

[22]  Roy Krischer Advanced Concepts in Asynchronous Exception Handling , 2010 .

[23]  Douglas C. Schmidt,et al.  Patterns for concurrent and networked objects , 2000 .

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

[25]  James Gosling,et al.  The Real-Time Specification for Java , 2000, Computer.

[26]  Bertrand Meyer,et al.  Object-oriented software construction (2nd ed.) , 1997 .

[27]  Ronald A. Olsson,et al.  An Exception Handling Mechanism for SR , 1990, Comput. Lang..

[28]  Denis Caromel,et al.  Robust Exception Handling in an Asynchronous Environment , 2005 .

[29]  Matti Rintala,et al.  Handling Multiple Concurrent Exceptions in C++ Using Futures , 2006, Advanced Topics in Exception Handling Techniques.

[30]  Carl Hewitt,et al.  A Universal Modular ACTOR Formalism for Artificial Intelligence , 1973, IJCAI.

[31]  Bertrand Meyer,et al.  Can asynchronous exceptions expire? , 2012, 2012 5th International Workshop on Exception Handling (WEH).

[32]  C. H. Flood,et al.  The Fortress Language Specification , 2007 .

[33]  Larry Diamond,et al.  The Self Restraining State: Power and Accountability in New Democracies , 1999 .