On Tue, Jan 22, 2013 at 01:23:51AM +0400, Konstantin A. Pustovalov wrote:
> 
> >>Hi!
> >>
> >>Sorry for being silent. Loong russian holidays, you know )
> >>But I have investigated a little. DBIC seems to not notice the
> >>exception if it (exeption) stringifies to zero length string. That
> >>was OK for my code since all error info was coded into exception
> >>type. Till DBIC upgrade. The fix was to add some message to all
> >>exceptions. Should I still pull test to fixate 0.08196 behavior?
> >Yes please. While this is ultimately a problem with your code (an
> >exception may *never* stringify to "", read `perldoc -f eval` for the
> >exact reason why), I still want to get DBIC to handle it correctly.
> >
> >Cheers
> >
> If you mean this snip from the doc:
> >  If there was no error, $@ is guaranteed to be the empty string
> 
> then this is not my case.

It actually is, you are just not looking at it from the viewpoint of
an external developer.

> Object which stringifies to empty string
> is definitely not the same as empty string (the former is true value
> while latter is not).

Yes, except that it is a flawed assumption that folks check for 
"truthiness" of $@. In fact any code that does this (if ($@) { ... }) is 
arguably wrong. The only correct way to check for an exception is (if 
($@ eq '') { ... } ) after an eval just took place. At which point you 
are landing straight into the trap that your exception objects are. Here 
is a little nonexhaustive search to convince you that the problem is not 
just academical [1]

Which brings me to your pull request - it can't be accepted as-is. The 
case of a ''-stringifying object is not business as usual. Hence the 
test you added needs to be tweaked to expect a *dfferent* exception, 
saying something like "Your exception thrown blah blah stringifies to 
the empty string - this is not ok, fix your exception library. Original 
exception was Foo::Bar=HASH(0x9bb77d0)." Or something like that.

[1] http://is.gd/RRXRpf

_______________________________________________
List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class
IRC: irc.perl.org#dbix-class
SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/
Searchable Archive: http://www.grokbase.com/group/dbix-class@lists.scsys.co.uk

Reply via email to