I. Introduction
Exception handling mechanisms were conceived as a means to improve evolvability of programs that have to deal with exceptional situations [6], [20]. Almost all modern programming languages provide exception handling mechanisms for facilitating the development of robust and evolvable programs. All these mechanisms offer similar facilities to modularly evolve exception handling code in several ways [15], including: (i) the representation of new erroneous situations as new exception types, (ii) removal and addition of handlers (or exceptional code) for existing or new exception types, (iii) definition of code blocks (normal code) as protected regions for handling exception occurrences, (iv) new associations of these protected regions with exception handlers, and (v) changes to the exception handling policies in the exception handlers.