diff --git a/core/templates/exception.php b/core/templates/exception.php
index 9fd19d5a8b..c8a2622009 100644
--- a/core/templates/exception.php
+++ b/core/templates/exception.php
@@ -1,8 +1,24 @@
');
+ p($e->getTraceAsString());
+ print_unescaped('');
+
+ if ($e->getPrevious() !== null) {
+ print_unescaped('
');
+ print_unescaped('
');
+ p($l->t('Previous'));
+ print_unescaped('
');
+
+ print_exception($e->getPrevious(), $l);
+ }
+}
+
?>
t('Internal Server Error')) ?>
@@ -26,6 +42,6 @@ style('core', ['styles', 'header']);
t('Trace')) ?>
-
+
diff --git a/lib/private/Template/Base.php b/lib/private/Template/Base.php
index 04d03b6e6f..21f2b33cfa 100644
--- a/lib/private/Template/Base.php
+++ b/lib/private/Template/Base.php
@@ -31,6 +31,7 @@
namespace OC\Template;
use OCP\Defaults;
+use Throwable;
class Base {
private $template; // The template
@@ -92,7 +93,7 @@ class Base {
/**
* Assign variables
* @param string $key key
- * @param array|bool|integer|string $value value
+ * @param array|bool|integer|string|Throwable $value value
* @return bool
*
* This function assigns a variable. It can be accessed via $_[$key] in
diff --git a/lib/private/legacy/OC_Template.php b/lib/private/legacy/OC_Template.php
index c14a43ea43..2ddb55096a 100644
--- a/lib/private/legacy/OC_Template.php
+++ b/lib/private/legacy/OC_Template.php
@@ -325,7 +325,7 @@ class OC_Template extends \OC\Template\Base {
$content->assign('errorCode', $exception->getCode());
$content->assign('file', $exception->getFile());
$content->assign('line', $exception->getLine());
- $content->assign('trace', $exception->getTraceAsString());
+ $content->assign('exception', $exception);
$content->assign('debugMode', \OC::$server->getSystemConfig()->getValue('debug', false));
$content->assign('remoteAddr', $request->getRemoteAddress());
$content->assign('requestID', $request->getId());