in reply to Re: Using die() in methods
in thread Using die() in methods
Oh, yes, that's exactly why I use die() only in object-builders, because I have a habit to new() through eval(). I've got this habit, because a certain number of other people's classes sometimes could die() in the builder().
But I think the descision to die() can have only the main module. Subroutines call other subroutine, if someone have an error occuried - okay, let them to return the special sign to the caller and the caller will report to its' caller and so on - until the process pop up to the main module. And the main module sends the long error message to the error stream: "Can't sub1(): Can't sub2(): Can't sub3(): Can't open connect to the database: ...".
I've made a tricky Error-class for my own usage. It has the method error(), when I call it with some parameter, it stores this parameter as the error message and returns undef, so I can do return($self->error("Something bad has happened")) and the caller will get undef. When it gets the undef value, it checks for $caller->has_error(). So I can be sure whenever the method has got an error or it just doesn't find any records in the database.
It's not worse than try/catch, but it let other people to call methods of my classes without being afraid to die().
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^3: Using die() in methods
by tobyink (Canon) on Jul 09, 2014 at 22:33 UTC | |
|
Re^3: Using die() in methods
by boftx (Deacon) on Jul 08, 2014 at 02:37 UTC |