TeaError.php 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <?php
  2. namespace AlibabaCloud\Tea\Exception;
  3. use RuntimeException;
  4. /**
  5. * Class TeaError.
  6. */
  7. class TeaError extends RuntimeException
  8. {
  9. public $message = '';
  10. public $code = 0;
  11. public $data;
  12. public $name = '';
  13. public $statusCode;
  14. public $description;
  15. public $accessDeniedDetail;
  16. private $errorInfo;
  17. /**
  18. * TeaError constructor.
  19. *
  20. * @param array $errorInfo
  21. * @param string $message
  22. * @param int $code
  23. * @param null|\Throwable $previous
  24. */
  25. public function __construct($errorInfo = [], $message = '', $code = 0, $previous = null)
  26. {
  27. parent::__construct((string) $message, (int) $code, $previous);
  28. $this->errorInfo = $errorInfo;
  29. if (!empty($errorInfo)) {
  30. $properties = ['name', 'message', 'code', 'data', 'description', 'accessDeniedDetail'];
  31. foreach ($properties as $property) {
  32. if (isset($errorInfo[$property])) {
  33. $this->{$property} = $errorInfo[$property];
  34. if ($property === 'data' && isset($errorInfo['data']['statusCode'])) {
  35. $this->statusCode = $errorInfo['data']['statusCode'];
  36. }
  37. }
  38. }
  39. }
  40. }
  41. /**
  42. * @return array
  43. */
  44. public function getErrorInfo()
  45. {
  46. return $this->errorInfo;
  47. }
  48. }