in reply to Using die() in methods
Also bear in mind that the parameter to die() can also be an object, not merely a string, so it can carry any sort of "payload" you wish, and it can be of an identifiable type (with an ancestry). Plenty of existing CPAN modules provide this easily.