I also make my own. Since I deal a lot with PDO, I also check if exception is PDO and add some details.
Output is not pretty, but it is meant for developer and nobody else.
static function FormatException($exception, $level = 0)
{
$result = "";
$result = sprintf('<div style="padding-left:%dpx">', $level * 20);
$result .= sprintf("<div><b>Message: </b> %s</div>", $exception->getMessage());
$result .= sprintf("<div><b>Code: </b> %s</div>", $exception->getCode());
$result .= sprintf("<div><b>File: </b> %s</div>", $exception->getFile());
$result .= sprintf("<div><b>Line: </b> %s</div>", $exception->getLine());
$result .= sprintf("<div><b>Trace: </b></div>");
$result .= sprintf('<div style="padding-left: 20px;">');
foreach ($exception->getTrace() as $trace)
{
$result .= sprintf('<div style="border: 1px solid #000;margin-top: 10px;">');
$result .= sprintf("<div><b>File: </b> %s</div>", $trace['file']);
$result .= sprintf("<div><b>Line: </b> %s</div>", $trace['line']);
$result .= sprintf("<div><b>Function: </b> %s</div>", $trace['function']);
$result .= sprintf("<div><b>Class: </b> %s</div>", $trace['class']);
$result .= sprintf("<div><b>Type: </b> %s</div>", $trace['type']);
$result .= sprintf("<div><b>Args: </b></div>");
$result .= sprintf('<div style="padding-left: 20px;">');
foreach ($trace['args'] as $arg)
$result .= sprintf("<div><b>Arg: </b>%s</div>", json_encode($arg));
$result .= sprintf("</div>");
$result .= sprintf("</div>");
}
$result .= sprintf("</div>");
if (get_class($exception) === "PDOException")
{
$result .= sprintf("<br />");
$result .= sprintf("<div><b>PDO: </b></div>");
$result .= sprintf('<div style="padding-left: 20px;">');
$result .= sprintf("<div><b>Code: </b> %s</div>", $exception->errorInfo[0]);
$result .= sprintf("<div><b>Driver code: </b> %s</div>", $exception->errorInfo[1]);
$result .= sprintf("<div><b>Message: </b> %s</div>", $exception->errorInfo[2]);
$result .= sprintf("</div>");
}
$prev = $exception->getPrevious();
if (isset($prev))
$result .= self::FormatException($prev, $level++);
$result .= sprintf("</div>");
$result .= sprintf("<br />");
return $result;
}