PEAR is archived and read-only

This mirror preserves historical PEAR package releases and metadata so existing references remain available.

Home » PEAR » PEAR » Bug #5330

echo Pear_Exception doesn't show message

Details

Submitted2005-09-08 08:54 UTC
Fromphp at adaniels dot nl
Assignedcellog
StatusClosed
PackagePEAR
PHP Version5.0.5
OSLinux
Roadmaps(Not assigned)

Comments

[2005-09-08 08:54 UTC] php at adaniels dot nl

Description:
------------
version: PEAR-1.3.6

The message as well as the class name of the exception are not shown when echo-ing a Pear_Exception.

PS. To output valid HTML, the table should have summary attribute.

Test script:
---------------
<?php
require_once('PEAR/Exception.php');

class myException extends PEAR_Exception {}
throw new myException("I would like to see this message");
?>

Expected result:
----------------
<b>Fatal error</b>: Uncaught 'myException' with message 'I would like to see this message'<table border="1" cellspacing="0" summary="Backtrace for uncaught Pear_Exception">
<tr><td colspan="3" bgcolor="#aaaaaa" align="center"><b>Exception trace</b></td></tr>
<tr><td align="center" bgcolor="#cccccc" width="20"><b>#</b></td><td align="center" bgcolor="#cccccc"><b>Function</b></td><td align="center" bgcolor="#cccccc"><b>Location</b></td></tr>
<tr><td align="center">0</td><td>unknown()</td><td>/var/www/seabert/webroot/ontwikkeling/djaboo2/test.php:3</td></tr>
<tr><td align="center">1</td><td>{main}</td><td> </td></tr>

</table>
thrown in <b>/var/www/seabert/webroot/ontwikkeling/djaboo2/test.php</b> on line <b>3</b><br />

Actual result:
--------------
<b>Fatal error</b>: Uncaught <table border="1" cellspacing="0">
<tr><td colspan="3" bgcolor="#aaaaaa" align="center"><b>Exception trace</b></td></tr>
<tr><td align="center" bgcolor="#cccccc" width="20"><b>#</b></td><td align="center" bgcolor="#cccccc"><b>Function</b></td><td align="center" bgcolor="#cccccc"><b>Location</b></td></tr>
<tr><td align="center">0</td><td>unknown()</td><td>/var/www/seabert/webroot/ontwikkeling/djaboo2/test.php:3</td></tr>
<tr><td align="center">1</td><td>{main}</td><td> </td></tr>

</table>
thrown in <b>/var/www/seabert/webroot/ontwikkeling/djaboo2/test.php</b> on line <b>3</b><br />

[2005-09-08 09:13 UTC] info at adaniels dot nl

Solution:
Add $causes[] = $cause;
----------

/**
* Function must be public to call on caused exceptions
* @param array
*/
public function getCauseMessage(&$causes)
{
$trace = $this->getTraceSafe();
$cause = array('class' => get_class($this),
'message' => $this->message,
'file' => 'unknown',
'line' => 'unknown');
if (isset($trace[0])) {
if (isset($trace[0]['file'])) {
$cause['file'] = $trace[0]['file'];
$cause['line'] = $trace[0]['line'];
}
}

$causes[] = $cause; //<---- Added

if ($this->cause instanceof PEAR_Exception) {
$this->cause->getCauseMessage($causes);
}
if (is_array($this->cause))