Error recovery in asynchronous systems
IEEE Transactions on Software Engineering
Distributed programming in Argus
Communications of the ACM
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Composing first-class transactions
ACM Transactions on Programming Languages and Systems (TOPLAS)
Proceedings of the fourteenth annual ACM symposium on Principles of distributed computing
Advanced Exception Handling Mechanisms
IEEE Transactions on Software Engineering
Exception handling: issues and a proposed notation
Communications of the ACM
Journal of Systems and Software
Transaction Processing: Concepts and Techniques
Transaction Processing: Concepts and Techniques
Object Design: Roles, Responsibilities, and Collaborations
Object Design: Roles, Responsibilities, and Collaborations
A program structure for error detection and recovery
Operating Systems, Proceedings of an International Symposium
System structure for software fault tolerance
Proceedings of the international conference on Reliable software
The Guardian Model for Exception Handling in Distributed Systems
SRDS '02 Proceedings of the 21st IEEE Symposium on Reliable Distributed Systems
Open Multithreaded Transactions: Keeping Threads and Exceptions under Control
WORDS '01 Proceedings of the Sixth International Workshop on Object-Oriented Real-Time Dependable Systems (WORDS'01)
Fault Tolerance in Concurrent Object-Oriented Software through Coordinated Error Recovery
FTCS '95 Proceedings of the Twenty-Fifth International Symposium on Fault-Tolerant Computing
Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley))
Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley))
LISP 1.5 Programmer's Manual
Toward Exception-Handling Best Practices and Patterns
IEEE Software
CAA-DRIP: a framework for implementing Coordinated Atomic Actions
ISSRE '06 Proceedings of the 17th International Symposium on Software Reliability Engineering
Nested transactional memory: model and architecture sketches
Science of Computer Programming - Special issue: Synchronization and concurrency in object-oriented languages
Subtleties of Transactional Memory Atomicity Semantics
IEEE Computer Architecture Letters
Exception Handling and Software Fault Tolerance
IEEE Transactions on Computers
Why do developers neglect exception handling?
Proceedings of the 4th international workshop on Exception handling
Journal of Systems and Software
In-field healing of integration problems with COTS components
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
Extending object-oriented languages with backward error recovery integrated support
Computer Languages, Systems and Structures
Exception handling: a field study in Java and .NET
ECOOP'07 Proceedings of the 21st European conference on Object-Oriented Programming
Automatic recovery from runtime failures
Proceedings of the 2013 International Conference on Software Engineering
A framework for self-healing software systems
Proceedings of the 2013 International Conference on Software Engineering
Hi-index | 0.00 |
Software reliability and error handling are concepts that any programmer knows and deals with on a daily basis. Even so, studies suggest that the current approach to exception handling raises fundamental incompatibilities with object-oriented concepts, being a major cause for the lack of quality on error handling code. In this paper, we propose an exception handling model that makes the runtime environment responsible for automatically dealing with abnormal situations. The platform provides a number of benign recovery actions that are able to deal automatically with most common exception types. Whenever an exception is raised, and a benign recovery method can be found, code is re-executed from a clean transactional state. In this approach try blocks not only represent a nesting level where a fault can occur but also a block that can be re-executed transactionally as a clean slate. For validating the approach two case studies were performed. One involved providing automatic exception handling for Glassfish's Java Messaging System implementation and the other for the Hipergate CRM application. Both showed that increased robustness is possible while freeing the programmer from manually writing extensive error-handling code.