Better implementation idea A. A role "X-no-trace" to compose into any exception class, B. which at BEGIN installs into the outermost scope CATCH block for anything that does X-no-trace, C. 3-6 as before :-)
that way, no need for COMPOSE block and $?CLASS variable. And as a bonus, can add the X-no-trace to a particular exception, without having to create a custom exception class- die X::IO::DoesNotExist.new(:path("foo/bar"), :trying("zombie copy")) but X-no-trace;