This includes partially built arrays. Exception specifications are now handled. Thrown objects are now cleaned up all the time. Exception handling should work right if you optimize. HPPA is mostly done, but throwing between a shared library and user code doesn't yet work.
Some targets have support for data-driven unwinding.
We don't call delete on new expressions that die because the ctor threw an exception. Type smashing should smash exception specifications using set union. Thrown objects are usually allocated on the heap, in the usual way. If one runs out of heap space, throwing an object will probably never work. Thrown objects are not allocated on the heap when they are pointer to object types.