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.
Regards,
--
Rowan Collins
[IMSoP]
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php