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