From Exception::Class documentation:
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-
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
Alternatively you can just redefine as_string() method to print uncaught exceptions as you wish.