Req #60341 [NEW]: SplFixedArray throws generic exceptions.
From:
Operating system: irrelevant
PHP version: Irrelevant
Package: SPL related
Bug Type: Feature/Change Request
Bug description:SplFixedArray throws generic exceptions.
Description:
------------
SplFixedArray thankfully throws exceptions when you try to do incorrect
things
with indices. However, the types of exceptions are just too generic. If I
give
the wrong type of index, that's a logic error (I'd expect InvalidArgument
or at
least something that inherits from LogicError to be thrown). If I give an
index
that's that's a valid type but doesn't exist, I'd expect an
OutOfBoundsException
to be thrown. Instead I get a generic RuntimeException.
I should expect because they are very different problems that I would at
least
get a distinguishing message between the two. However, I get the same
descriptions: 'Index invalid or out of range'. The very message suggests
they
should be different exceptions.
The first fix would sort-of break backwards compatibility: throw an
InvalidArgumentException for things of the wrong type.
The second fix, throw OutOfBoundsException on incorrect index, could be
implemented and keep backwards compatibility.
Test script:
---------------
$fa = new SplFixedArray(1);
$fa[new StdClass()]; //expect InvalidArgumentException or perhaps
OutOfRangeException
$fa[2] = 'james'; // expect OutOfBoundsException
Expected result:
----------------
I expect $fa[new StdClass] to throw an InvalidArgumentException, not a
RuntimeException
I expect $fa['2'] to throw OutOfBoundsException not a RuntimeException.
Actual result:
--------------
Both throw RuntimeExceptions.
--
Edit bug report at https://bugs.php.net/bug.php?id=60341&edit=1
--
Try a snapshot (PHP 5.4): https://bugs.php.net/fix.php?id=60341&r=trysnapshot54
Try a snapshot (PHP 5.3): https://bugs.php.net/fix.php?id=60341&r=trysnapshot53
Try a snapshot (trunk): https://bugs.php.net/fix.php?id=60341&r=trysnapshottrunk
Fixed in SVN: https://bugs.php.net/fix.php?id=60341&r=fixed
Fixed in SVN and need be documented: https://bugs.php.net/fix.php?id=60341&r=needdocs
Fixed in release: https://bugs.php.net/fix.php?id=60341&r=alreadyfixed
Need backtrace: https://bugs.php.net/fix.php?id=60341&r=needtrace
Need Reproduce Script: https://bugs.php.net/fix.php?id=60341&r=needscript
Try newer version: https://bugs.php.net/fix.php?id=60341&r=oldversion
Not developer issue: https://bugs.php.net/fix.php?id=60341&r=support
Expected behavior: https://bugs.php.net/fix.php?id=60341&r=notwrong
Not enough info: https://bugs.php.net/fix.php?id=60341&r=notenoughinfo
Submitted twice: https://bugs.php.net/fix.php?id=60341&r=submittedtwice
register_globals: https://bugs.php.net/fix.php?id=60341&r=globals
PHP 4 support discontinued: https://bugs.php.net/fix.php?id=60341&r=php4
Daylight Savings: https://bugs.php.net/fix.php?id=60341&r=dst
IIS Stability: https://bugs.php.net/fix.php?id=60341&r=isapi
Install GNU Sed: https://bugs.php.net/fix.php?id=60341&r=gnused
Floating point limitations: https://bugs.php.net/fix.php?id=60341&r=float
No Zend Extensions: https://bugs.php.net/fix.php?id=60341&r=nozend
MySQL Configuration Error: https://bugs.php.net/fix.php?id=60341&r=mysqlcfg
Thread (8 messages)
- morrison dot levi at gmail dot com