Commit b184a75d by Qiang Xue

Recursively return previous exceptions in toArray().

parent df0779fb
......@@ -29,23 +29,33 @@ class Exception extends \Exception implements Arrayable
*/
public function toArray()
{
$array = array(
'type' => get_class($this),
'name' => $this->getName(),
'message' => $this->getMessage(),
'code' => $this->getCode(),
);
if (($prev = $this->getPrevious()) !== null) {
if ($prev instanceof self) {
$array['previous'] = $prev->toArray();
} else {
$array['previous'] = array(
'type' => get_class($prev),
'name' => 'Exception',
'message' => $prev->getMessage(),
'code' => $prev->getCode(),
);
}
return $this->toArrayRecursive($this);
}
/**
* Returns the array representation of the exception and all previous exceptions recursively.
* @param \Exception exception object
* @return array the array representation of the exception.
*/
protected function toArrayRecursive($exception)
{
if ($exception instanceof self) {
$array = array(
'type' => get_class($this),
'name' => $this->getName(),
'message' => $this->getMessage(),
'code' => $this->getCode(),
);
} else {
$array = array(
'type' => get_class($exception),
'name' => 'Exception',
'message' => $exception->getMessage(),
'code' => $exception->getCode(),
);
}
if (($prev = $exception->getPrevious()) !== null) {
$array['previous'] = $this->toArrayRecursive($prev);
}
return $array;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment