I would not advise overriding any “core” functionality, because of course that would be all-encompassing.
Consider using code such as Exception::Class, which leverages the fact that you can in fact “die” with an object, not merely a text string.
I simply think that it is very inadvisable to make any changes that have “global” ramifications to suit a “app-specific” requirement ... because they expose the entire software (every CPAN module, etc.) to the very considerable side-effects of your change. If I may opine, “Abandon All Hope, Ye Who Enter Here.” I’m scrambling away from the very thought of this situation so fast, I don’t even care why it’s not working ... My spider-sense is going off; my trusty elven sword is glowing bright blue ...