On Wed, Feb 25, 2015 at 4:19 PM, Rowan Collins <rowan.coll...@gmail.com> wrote:
> Tony Marston wrote on 21/02/2015 10:08: > >> ""Nikita Nefedov"" wrote in message news:op.xuco5eutc9evq2@nikita-pc... >> >>> >>> On Fri, 20 Feb 2015 12:39:33 +0300, Tony Marston < >>> tonymars...@hotmail.com> wrote: >>> >>>> >>>> I disagree. Exceptions were originally invented to solve the >>>> semipredicate problem which only exists with procedural functions, not >>>> object methods. Many OO purists would like exceptions to be thrown >>>> everywhere, but this would present a huge BC break. If it were possible get >>>> these functions to throw an exception ONLY when they are included in a try >>>> ... catch block then this would not break BC at all. >>>> >>>> >>> Tony, first of all - this still breaks BC, because exception is being >>> thrown in a place where it used not to be... >>> >> >> I disagree. The following function calls would not throw exceptions >> fopen(...); >> fwrite(...); >> fclose(...); >> >> while the following code would: >> try { >> fopen(...); >> fwrite(...); >> fclose(...); >> } catch (....) { >> .... >> } >> > > But what about this code, which could well already exist: > > try { > $fh = fopen(...); > $this->processLotsOfDataAndMaybeThrowAnException($fh); > fclose($fh); > } catch (....) { > .... > } > > If fopen() starts throwing exceptions here, that's as much a BC break as > it throwing them everywhere. If it doesn't, the rules for when it should > throw become even more complicated, and useful in even fewer cases. > No. The proposal is only about fatal engine errors, like "Fatal Error: Call to undefined function %s()". Instead of script termination they will throw exceptions. fopen() won't be touched at all. It's out of scope of proposal. Thanks. Dmitry. > > Regards, > -- > Rowan Collins > [IMSoP] > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php > >