summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2014-05-23 11:41:22 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2014-05-23 11:41:22 -0400
commit90fcefdbff5a16c8b900e1b45e05853a8f7b5b4b (patch)
tree7551eddcbf6bbbeefadd42bf989b0aa81b031839
parent91c9c024f32dd4dc0c336b8fa65b17542565649a (diff)
parentcb9105d605730699f6302ab441755ceb02ee17ab (diff)
downloadmako-90fcefdbff5a16c8b900e1b45e05853a8f7b5b4b.tar.gz
Merge branch 'error_handler' of https://bitbucket.org/designst/mako/overview into t
-rw-r--r--mako/compat.py12
-rw-r--r--mako/runtime.py2
2 files changed, 13 insertions, 1 deletions
diff --git a/mako/compat.py b/mako/compat.py
index e26b65b..fe277bb 100644
--- a/mako/compat.py
+++ b/mako/compat.py
@@ -68,6 +68,18 @@ else:
fp.close()
+if py3k:
+ def reraise(tp, value, tb=None, cause=None):
+ if cause is not None:
+ value.__cause__ = cause
+ if value.__traceback__ is not tb:
+ raise value.with_traceback(tb)
+ raise value
+else:
+ exec("def reraise(tp, value, tb=None, cause=None):\n"
+ " raise tp, value, tb\n")
+
+
def exception_as():
return sys.exc_info()[1]
diff --git a/mako/runtime.py b/mako/runtime.py
index d7b9681..31ad557 100644
--- a/mako/runtime.py
+++ b/mako/runtime.py
@@ -863,7 +863,7 @@ def _render_error(template, context, error):
if template.error_handler:
result = template.error_handler(context, error)
if not result:
- raise error
+ compat.reraise(*sys.exc_info())
else:
error_template = exceptions.html_error_template()
if context._outputting_as_unicode: