Exceptions add a significant element of robustness and fault-tolerance to an application. In real-time systems, however, we require not only semantic correctness, robustness, and fault-tolerance, but also timely behavior. For restricted languages, schedulability analysis can be made efficient through use of polynomial-time analyses and transformations. In this paper, we show how a reasonable level of exception handling can be added to such a language. Specifically, we present an exception mechanism which reasonably provides for (1) guaranteed schedulability, (2) fine granularity of exception handling, (3) possibility of non-termination of the process that raises the exception, (4) reuse of exception handlers within the program, (5) information hiding in exception handlers, (6) exceptions as first-class objects, (7) casting or binding of exceptions, and (8) deadline modification. Furthermore, the mechanism allows for easy specification of multi-mode operation, and permits program component assignment using expected behavior while enabling schedulability analysis of worst-case (often exceptional) behavior. While adding features to exception handler semantics can create new analysis problems while solving expressivity problems, we show that the exception handling features described above are desirable, that the complexity of static schedulability analysis in the presence of these features is manageable, and that existing language provides all these desirable features.