-<?php namespace BookStack\Exceptions;
+<?php
-class PrettyException extends \Exception {}
\ No newline at end of file
+namespace BookStack\Exceptions;
+
+use Exception;
+use Illuminate\Contracts\Support\Responsable;
+
+class PrettyException extends Exception implements Responsable
+{
+ /**
+ * @var ?string
+ */
+ protected $subtitle = null;
+
+ /**
+ * @var ?string
+ */
+ protected $details = null;
+
+ /**
+ * Render a response for when this exception occurs.
+ *
+ * @inheritdoc
+ */
+ public function toResponse($request)
+ {
+ $code = ($this->getCode() === 0) ? 500 : $this->getCode();
+
+ return response()->view('errors.' . $code, [
+ 'message' => $this->getMessage(),
+ 'subtitle' => $this->subtitle,
+ 'details' => $this->details,
+ ], $code);
+ }
+
+ public function setSubtitle(string $subtitle): self
+ {
+ $this->subtitle = $subtitle;
+
+ return $this;
+ }
+
+ public function setDetails(string $details): self
+ {
+ $this->details = $details;
+
+ return $this;
+ }
+}