A framework for analyzing exception flow in software architectures