I. Introduction
Robust software must be able to recover from a variety of unforeseen error conditions that may arise during runtime. Languages such as C++,Java, and Python provide a flexible language feature for this known as exception handling(EH), where functions can interrupt normal execution to allow special error handlers to run and, if possible, recover from the error condition. A key feature of EH is that errors are often handled in a part of the code that is removed from where the problem is detected; this allows developers to place error handling code in key spots of the design, rather than insisting that errors be handled when and where they are first detected.