- exceptions are expensive
- unknown price (space/performance) and behaviour
- heap allocated
- ironically, stack unwinding in C++ (a compiled language) is executed by dwarf interpreter
- also, stack unwinding can allocate memory
- exception costs are unpredictable
- exceptions prevent compiler from using certain optimizations
- unreliable
- proposals to change exceptions (Herb's "Deterministic exceptions", Outcome pattern)