| 
<?phpnamespace Aws\Exception;
 
 use Aws\Multipart\UploadState;
 
 class MultipartUploadException extends \RuntimeException
 {
 /** @var UploadState State of the erroneous transfer */
 private $state;
 
 /**
 * @param UploadState      $state Upload state at time of the exception.
 * @param \Exception|array $prev  Exception being thrown.
 */
 public function __construct(UploadState $state, $prev = null) {
 $msg = 'An exception occurred while performing a multipart upload.';
 
 if (is_array($prev)) {
 $msg = strtr($msg, ['performing' => 'uploading parts to']);
 $msg .= " The following parts had errors:\n";
 /** @var $error AwsException */
 foreach ($prev as $part => $error) {
 $msg .= "- Part {$part}: " . $error->getMessage(). "\n";
 }
 } elseif ($prev instanceof AwsException) {
 switch ($prev->getCommand()->getName()) {
 case 'CreateMultipartUpload':
 case 'InitiateMultipartUpload':
 $action = 'initiating';
 break;
 case 'CompleteMultipartUpload':
 $action = 'completing';
 break;
 }
 if (isset($action)) {
 $msg = strtr($msg, ['performing' => $action]);
 }
 }
 
 if (!$prev instanceof \Exception) {
 $prev = null;
 }
 
 parent::__construct($msg, 0, $prev);
 $this->state = $state;
 }
 
 /**
 * Get the state of the transfer
 *
 * @return UploadState
 */
 public function getState()
 {
 return $this->state;
 }
 }
 
 |