Is there a theory of exception hierarchies?
There's a large number of publications on exceptions, with quite a few theoretical investigations. Here is an unstructured and far from complete list with some examples. Sorry, I don't have
time at the moment for a more focussed reply.


B. Randell, System Structure for Software Fault Tolerance.
J. B. Goodenough. Exception handling: Issues and a proposed notation.
J. B. Goodenough. Structured exception handling.
B. G. Ryder, M. L. Soffa, Influences on the Design of Exception Handling.
D. Teller, A. Spiwack, T. Varoquaux, Catch me if you can: Towards type-safe, hierarchical, lightweight, polymorphic and efficient error management in OCaml.
X. Leroy, F. Pessaux, Type-based analysis of uncaught exceptions.
R. Miller, A. Tripathi, Issues with Exception Handling in Object-Oriented Systems.
S. Drew, K. J. Gough, J. Ledermann, Implementing Zero-Overhead Exception Handling.
B. Stroustrup, Exception Safety: Concepts and Techniques.
D. Malayeri, J. Aldrich, Practical Exception Specifications.
H. Nakano, A Constructive Formalization of the Catch and Throw Mechanism.
A. Nanevski, A Modal Calculus for Exception Handling.
P. de Groote, A Simple Calculus of Exception Handling.
H. Thielecke, On Exceptions and Continuations in Presence of State.
J. G. Riecke, H. Thielecke, Typed Exceptions and Continuations Cannot Macro-Express Each Other.
M. van Dooren, E. Steegmans, Combining the Robustness of Checked Exceptions with the Flexibility of Unchecked Exceptions using Anchored Exception Declarations.
J. A. Vaughan, A logical interpretation of Java-style exceptions.
S. Marlow, S. Peyton Jones, A. Moran, Asynchronous Exceptions in Haskell.
B. Jacobs, F. Piessens, Failboxes: Provably Safe Exception Handling.