1<?php 2 3namespace GuzzleHttp\Promise; 4 5/** 6 * A special exception that is thrown when waiting on a rejected promise. 7 * 8 * The reason value is available via the getReason() method. 9 */ 10class RejectionException extends \RuntimeException 11{ 12 /** @var mixed Rejection reason. */ 13 private $reason; 14 15 /** 16 * @param mixed $reason Rejection reason. 17 * @param string $description Optional description 18 */ 19 public function __construct($reason, $description = null) 20 { 21 $this->reason = $reason; 22 23 $message = 'The promise was rejected'; 24 25 if ($description) { 26 $message .= ' with reason: ' . $description; 27 } elseif (is_string($reason) 28 || (is_object($reason) && method_exists($reason, '__toString')) 29 ) { 30 $message .= ' with reason: ' . $this->reason; 31 } elseif ($reason instanceof \JsonSerializable) { 32 $message .= ' with reason: ' 33 . json_encode($this->reason, JSON_PRETTY_PRINT); 34 } 35 36 parent::__construct($message); 37 } 38 39 /** 40 * Returns the rejection reason. 41 * 42 * @return mixed 43 */ 44 public function getReason() 45 { 46 return $this->reason; 47 } 48} 49