#45767 [Fbk->Opn]: Uncommon order and chained exceptions

[email protected] ("david at grudl dot com")
Newsgroups php.bugs
Message-ID <[email protected]>
 ID:               45767
 User updated by:  david at grudl dot com
 Reported By:      david at grudl dot com
-Status:           Feedback
+Status:           Open
 Bug Type:         Scripting Engine problem
 Operating System: *
 PHP Version:      5.3.0alpha1
 New Comment:

Reproduce code:

<?php

class LowException extends Exception
{
}

class HighException extends Exception
{
}

$e = new LowException("File not found.");

$e = new HighException("Missing configuration.", 0, $e);

echo $e; // $e is HighException instance
?>


Expected result:
----------------
exception 'HighException' with message 'Missing configuration.' in
test.php:13 
Stack trace:
#0 {main}

Previous exception (or "Caused by") 'LowException' with message 'File
not found.' in test.php:11
Stack trace:
#0 {main}


Actual result:
---------------
exception 'LowException' with message 'File not found.' in test.php:11
Stack trace:
#0 {main}

Next exception 'HighException' with message 'Missing configuration.' in
test.php:13
Stack trace:
#0 {main}


Description:
------------
The first (and most appealing) line of textual output begins with
"exception 'LowException' with message ...", but the printed exception
is 'HighException'. This order makes output less evident.


Previous Comments:
------------------------------------------------------------------------

[2008-08-09 20:45:15] [email protected]

Thank you for this bug report. To properly diagnose the problem, we
need a short but complete example script to be able to reproduce
this bug ourselves. 

A proper reproducing script starts with <?php and ends with ?>,
is max. 10-20 lines long and does not require any external 
resources such as databases, etc. If the script requires a 
database to demonstrate the issue, please make sure it creates 
all necessary tables, stored procedures etc.

Please avoid embedding huge scripts into the report.

Your code handles an exception, throws a new one, which results in an
"Fatal error: Uncaught exception", neither what you expect nor your
actual code, please provide a proper reproduce case and explain the
issue.

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

[2008-08-08 17:15:27] david at grudl dot com

Sorry - Expected result is Actual and Actual is Expected.

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

[2008-08-08 17:13:33] david at grudl dot com

Description:
------------
Chained exceptions are printed in uncommon order (from inner to outer
exception). This makes me confused :-(

Reference:
http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Throwable.html#printStackTrace()

Reproduce code:
---------------
    try {
        throw new FileNotFoundException("File not found.");

    } catch (FileNotFoundException $e) {

        throw new ConfigException("Missing configuration.", 0, $e);
    }

echo $e; // note $e is ConfigException!


Expected result:
----------------
exception 'FileNotFoundException' with message 'File not found.' in
demo.php:8
Stack trace:
#0 demo.php(17): ...
#1 {main}

Next exception 'ConfigException' with message 'Missing configuration.'
in demo.php:21
Stack trace:
#0 demo.php(28): ....
#1 {main}

Actual result:
--------------
exception 'ConfigException' with message 'Missing configuration.' in
demo.php:21
Stack trace:
#0 demo.php(28): ....
#1 {main}

previous exception 'FileNotFoundException' with message 'File not
found.' in demo.php:8
Stack trace:
#0 demo.php(17): ...
#1 {main}



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


-- 
Edit this bug report at http://bugs.php.net/?id=45767&edit=1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.