The problem with die and croak
In both cases the error string defines the type of the error. If we want to change the text, then in every place where we catch those errors we have to update some regular expression. Cannot easily propagate the context of the error as it is just a string.