|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2012-12-29 12:34 UTC] johannes@php.net
[2012-12-29 12:34 UTC] johannes@php.net
-Status: Open
+Status: Not a bug
[2012-12-29 16:12 UTC] mattsch at gmail dot com
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sun Nov 02 01:00:02 2025 UTC |
Description: ------------ The pdo construct has no way of continuing the exception chain. It needs another parameter at the end so you can pass in the previous exception. For that matter, is there any kind of effort to add exception chaining parameters for all php classes that throw exceptions? Test script: --------------- <?php class MyCustomException extends Exception {} function doStuff() { try { throw new InvalidArgumentException("You are doing it wrong!", 112); } catch(Exception $e) { try { $pdo = new PDO('foo', 'foo', 'bar', array()); // exception chain lost // $pdo = new PDO('foo', 'foo', 'bar', array(), $e); // needs additional previous exception parameter } catch (Exception $ex) { throw new MyCustomException("Something happened", 911, $ex); } } } try { doStuff(); } catch(Exception $e) { do { printf("%s:%d %s (%d) [%s]\n", $e->getFile(), $e->getLine(), $e->getMessage(), $e->getCode(), get_class($e)); } while($e = $e->getPrevious()); } Expected result: ---------------- foo.php:13 Something happened (911) [MyCustomException] foo.php:10 invalid data source name (0) [PDOException] foo.php:7 You are doing it wrong! (112) [InvalidArgumentException] Actual result: -------------- foo.php:13 Something happened (911) [MyCustomException] foo.php:10 invalid data source name (0) [PDOException]