I'm concerned about trapping *all* condition objects (and there is no standard hierarchy of condition types). There are two particularly bad cases, asynchronous exceptions and exceptions that the implementation relies on not being caught.
In a Scheme that transforms Posix signals into exceptions, it would be impossible to terminate or stop a process while inside this feature by SIGINT or SIGSTOP (though SIGQUIT and SIGTSTP will still work), nor will SIGBUS be very useful if trapped. If there were a reliable signal-from-exception? predicate, that would help, but there isn't. Similarly, an implementation that raises an out-of-memory exception from the GC may find it being swallowed if the GC runs on any random thread rather than its own.
In Java at least, a thread is killed (by itself or another thread) by raising an instance of ThreadDeath class. This can be observed by a try-finally expression in order to execute the thread's finalizers if any. But if it is caught without being re-raised, the Java runtime will not properly kill the thread. That would keep all threads alive while such a block was running.