* @since 2.0 */ class Exception extends \Exception implements Arrayable { /** * @return string the user-friendly name of this exception */ public function getName() { return \Yii::t('yii', 'Exception'); } /** * Returns the array representation of this object. * @return array the array representation of this object. */ public function toArray() { 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) { $array = [ 'type' => get_class($exception), 'name' => $exception instanceof self ? $exception->getName() : 'Exception', 'message' => $exception->getMessage(), 'code' => $exception->getCode(), ]; if (($prev = $exception->getPrevious()) !== null) { $array['previous'] = $this->toArrayRecursive($prev); } return $array; } }