Exception raising and handling must require no heap-allocated memory for core functionality. Exception handling should minimize the amount of information on the stack. Exception handling must be able to propagate across external code. Exception handling should gracefully extend into multithreading. Exception handling should be statically checkable. Exception handling should be efficient at runtime.