PEAR is discontinued

This is a static archive preserving historical releases and metadata. No new packages or updates will be published. For updates to existing packages, or to publish new packages, please use Composer and Packagist.

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))