In general, exceptions as result of type conversion are good.
But they does NOT work in PHP, because of exception mechanism
design/implementation.

Half year ago we disabled exceptions in __toString() especially because of
this reason.
I prefer disable exceptions for unicode conversions too.

Thanks. Dmitry.

> -----Original Message-----
> From: Andi Gutmans [mailto:[EMAIL PROTECTED] 
> Sent: Friday, April 14, 2006 2:52 AM
> To: Andrei Zmievski; PHP Internals
> Cc: Dmitry Stogov
> Subject: Re: Unicode conversion exceptions and memory leaks
> 
> 
> As you know, exceptions were designed to be user-land and not for 
> internal functionality. I warned about that more exceptions were 
> being integrated into the extensions; and I especially warned of 
> ideas of integrating them into language constructs such as type hints 
> and conversions.
> I don't have a good solution for this right now, except for adding a 
> lot of bulk to C extensions and the core and making them overly 
> complicated. Anyway, I'll discuss with Dmitry and see if he has any 
> ideas I didn't think of.
> 
> re: this specific case. Is it really a good idea for a type 
> conversion to throw an exception? People won't be expecting that from 
> reading the code. They'd most likely only expect methods to 
> throw exceptions...
> 
> Andi
> 
> At 03:44 PM 4/13/2006, Andrei Zmievski wrote:
> >If you run this code in PHP 6 right now, you will get a nice memory
> >leak notice.
> >
> ><?php
> >
> >unicode_set_error_mode(FROM_UNICODE, U_CONV_ERROR_STOP |
> >U_CONV_ERROR_EXCEPTION);
> >
> >$u = "< \u3844 >";
> >try {
> >     $s = (binary)$u;
> >} catch (UnicodeConversionException $e) {
> >}
> >
> >?>
> >
> >/homes/andrei/dev/php-src/Zend/zend_unicode.c(461) :  Freeing
> >0x013FC4E4 (1 bytes), script=e.php
> >
> > From what Dmitry tells me, it is impossible to fix this with the
> > way our exceptions are implemented currently. I trust him on this, 
> > but at the same time I think we need to do something. The 
> > conversions will be happening in a lot of place and being able to 
> > catch an exception, if one results, is an important part of the 
> > workflow. I think Dmitry proposed that we could re-write exceptions 
> > implementation, but also said that it would be a lot of work. I 
> > think we should seriously consider it, though.
> >
> >Thoughts?
> >
> >-Andrei
> 
> 
> 

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to