From Exception::Class documentation:
* Trace($boolean)
Each "Exception::Class::Base" subclass can be set
individually to include a a stracktrace when the
"as_string" method is called. The default is to not
include a stacktrace. Calling this method with a
value changes this behavior. It always returns the
current value (after any change is applied).
This value is inherited by any subclasses. However,
if this value is set for a subclass, it will there-
after be independent of the value in "Excep-
tion::Class::Base".
This is a class method, not an object method.
I.e if you need stacktraces for exception class MyException (and its childs) you need to add
MyException->Trace(1);
Alternatively you can just redefine as_string() method to print uncaught exceptions as you wish.