Bug #68992 [NEW]: json_encode stacks exceptions thrown by JsonSerializable classes

From: Date: Thu, 05 Feb 2015 13:17:05 +0000
Subject: Bug #68992 [NEW]: json_encode stacks exceptions thrown by JsonSerializable classes
Groups: php.bugs 
Request: Send a blank email to php-bugs+get-190479@lists.php.net to get a copy of this message
From: knuteirik at leirahjelle dot net Operating system: OS X PHP version: Irrelevant Package: JSON related Bug Type: Bug Bug description:json_encode stacks exceptions thrown by JsonSerializable classes Description: ------------ When calling json_encode on an array of classes implementing JsonSerializable and all of the classes throw an exception, the original exception appears on the end of an exception chain that is equal to the length of the array + 1. Test script: --------------- <?php class MyClass implements JsonSerializable { public function jsonSerialize() { throw new Exception('Not implemented!'); } } $classes = []; for($i = 0; $i < 5; $i++) { $classes[] = new MyClass(); } try { json_encode($classes); } catch(Exception $e) { do { printf("%s (%d) [%s]\n", $e->getMessage(), $e->getCode(), get_class($e)); } while($e = $e->getPrevious()); } Expected result: ---------------- Failed calling MyClass::jsonSerialize() (0) [Exception] Not implemented! (0) [Exception] Actual result: -------------- Failed calling MyClass::jsonSerialize() (0) [Exception] Failed calling MyClass::jsonSerialize() (0) [Exception] Failed calling MyClass::jsonSerialize() (0) [Exception] Failed calling MyClass::jsonSerialize() (0) [Exception] Failed calling MyClass::jsonSerialize() (0) [Exception] Not implemented! (0) [Exception] -- Edit bug report at https://bugs.php.net/bug.php?id=68992&edit=1 -- Try a snapshot (PHP 5.4): https://bugs.php.net/fix.php?id=68992&r=trysnapshot54 Try a snapshot (PHP 5.5): https://bugs.php.net/fix.php?id=68992&r=trysnapshot55 Try a snapshot (trunk): https://bugs.php.net/fix.php?id=68992&r=trysnapshottrunk Fixed in SVN: https://bugs.php.net/fix.php?id=68992&r=fixed Fixed in release: https://bugs.php.net/fix.php?id=68992&r=alreadyfixed Need backtrace: https://bugs.php.net/fix.php?id=68992&r=needtrace Need Reproduce Script: https://bugs.php.net/fix.php?id=68992&r=needscript Try newer version: https://bugs.php.net/fix.php?id=68992&r=oldversion Not developer issue: https://bugs.php.net/fix.php?id=68992&r=support Expected behavior: https://bugs.php.net/fix.php?id=68992&r=notwrong Not enough info: https://bugs.php.net/fix.php?id=68992&r=notenoughinfo Submitted twice: https://bugs.php.net/fix.php?id=68992&r=submittedtwice register_globals: https://bugs.php.net/fix.php?id=68992&r=globals PHP 4 support discontinued: https://bugs.php.net/fix.php?id=68992&r=php4 Daylight Savings: https://bugs.php.net/fix.php?id=68992&r=dst IIS Stability: https://bugs.php.net/fix.php?id=68992&r=isapi Install GNU Sed: https://bugs.php.net/fix.php?id=68992&r=gnused Floating point limitations: https://bugs.php.net/fix.php?id=68992&r=float No Zend Extensions: https://bugs.php.net/fix.php?id=68992&r=nozend MySQL Configuration Error: https://bugs.php.net/fix.php?id=68992&r=mysqlcfg

« previous php.bugs (#190479) next »