In this paper, a new semantics for exception handling in algebraic specifications is provided. Our formalism allows all forms of exception and error handling (several error messages, implict error propagation rule, exception recovery policy), while preserving the existence of initial models. The main concepts of our approach are: the distinction between exception and error, and the introduction of exception labelling allowing to formalize various error messages. This formalism allows use of congruences in a similar manner as in the classical abstract data type theory. Moreover, we show how a functional semantics of enrichment can be carried over to our framework, and we show how hierarchical consistency and sufficient completeness can be redefined. Then, we briefly sketch out how abstract implementations can be extended in order to include exception handling. Indeed, abstract implementation of specifications including exception handling was one of main motivations for the work reported here.