Edit report at https://bugs.php.net/bug.php?id=63873&edit=1

 ID:                 63873
 User updated by:    mattsch at gmail dot com
 Reported by:        mattsch at gmail dot com
 Summary:            Implement exception chaining within core classes
-Status:             Open
+Status:             Closed
 Type:               Feature/Change Request
 Package:            Class/Object related
 Operating System:   Gentoo
 PHP Version:        5.3.20
 Block user comment: N
 Private report:     N

 New Comment:

It turns out that this is not necessary.  The workaround for this is to catch 
core exceptions and throw a new exception and pass the previous exception (core 
exception) into the new exception.  Then the exception chain won't be broken.


Previous Comments:
------------------------------------------------------------------------
[2012-12-29 16:26:07] mattsch at gmail dot com

Description:
------------
php core classes have no way of continuing the exception chain.  If we are to 
have proper exception chaining as implemented in the exception class in php 
5.3, we should also have the ability to continue the exception chain within php 
core classes to make debugging easier.

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:
----------------
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:
--------------
Actual result:
--------------
foo.php:13 Something happened (911) [MyCustomException]
foo.php:10 invalid data source name (0) [PDOException]


------------------------------------------------------------------------



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=63873&edit=1

Reply via email to