Service Oriented Architectures (SOAs) enable the automatic creation of business applications from independently developed and deployed Web services. As Web services are inherently a priori unknown (in terms of dependability), how to deliver reliable Web services compositions is a significant and challenging problem. In this paper, we propose a framework for infusing dependability in SOAs through self-healing. We identify a set of high-level exception handling strategies based on the composition components' QoS performances and consumer requirements. Multiple recovery plans are produced and evaluated according to the performance of the included services, to select and execute the best recovery plan. We assess the overall system dependability using the generated plan and the available invocation information of the included services. Experiment results indicate the applicability of our method, and show the improved performance in comparison with similar existing approaches.