--- /dev/null
+<?php
+
+namespace Shaarli\Updater\Exception;
+
+use Exception;
+
+/**
+ * Class UpdaterException.
+ */
+class UpdaterException extends Exception
+{
+ /**
+ * @var string Method where the error occurred.
+ */
+ protected $method;
+
+ /**
+ * @var Exception The parent exception.
+ */
+ protected $previous;
+
+ /**
+ * Constructor.
+ *
+ * @param string $message Force the error message if set.
+ * @param string $method Method where the error occurred.
+ * @param Exception|bool $previous Parent exception.
+ */
+ public function __construct($message = '', $method = '', $previous = false)
+ {
+ $this->method = $method;
+ $this->previous = $previous;
+ $this->message = $this->buildMessage($message);
+ }
+
+ /**
+ * Build the exception error message.
+ *
+ * @param string $message Optional given error message.
+ *
+ * @return string The built error message.
+ */
+ private function buildMessage($message)
+ {
+ $out = '';
+ if (!empty($message)) {
+ $out .= $message . PHP_EOL;
+ }
+
+ if (!empty($this->method)) {
+ $out .= t('An error occurred while running the update ') . $this->method . PHP_EOL;
+ }
+
+ if (!empty($this->previous)) {
+ $out .= ' ' . $this->previous->getMessage();
+ }
+
+ return $out;
+ }
+}