The JVM clears the stack when it enters an exception handler (in Java
Minor clarification: the call stack frames are unwound rather than cleared. The stack doesn't clear completely, it unwinds to the catching frame.
If any values were stored on the stack, they're gone at that point, _unless_ they were pushed before invoking the throwing operation. I actually don't see how local variables are different, as both operand stacks and local variables are stored into call stack frames. If the frame is unwound, the values are gone. If the frame and/or local variables are established before the throwing call, they still exist after a throw, otherwise not.