blob: 9609aea294343ddcc6037d8cf7af4a57604ce5cc [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_281) on Sun Jan 15 15:58:35 CET 2023 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>TemplateExceptionHandler (FreeMarker 2.3.32 API)</title>
<meta name="date" content="2023-01-15">
<link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="TemplateExceptionHandler (FreeMarker 2.3.32 API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/TemplateExceptionHandler.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../index-all.html">Index</a></li>
<li><a href="../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../freemarker/template/TemplateHashModel.html" title="interface in freemarker.template"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../index.html?freemarker/template/TemplateExceptionHandler.html" target="_top">Frames</a></li>
<li><a href="TemplateExceptionHandler.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">freemarker.template</div>
<h2 title="Interface TemplateExceptionHandler" class="title">Interface TemplateExceptionHandler</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>public interface <span class="typeNameLabel">TemplateExceptionHandler</span></pre>
<div class="block">Used for the <a href="../../freemarker/core/Configurable.html#setTemplateExceptionHandler-freemarker.template.TemplateExceptionHandler-"><code>template_exception_handler</code></a>
configuration setting.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Field and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="../../freemarker/template/TemplateExceptionHandler.html" title="interface in freemarker.template">TemplateExceptionHandler</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/template/TemplateExceptionHandler.html#DEBUG_HANDLER">DEBUG_HANDLER</a></span></code>
<div class="block"><a href="../../freemarker/template/TemplateExceptionHandler.html" title="interface in freemarker.template"><code>TemplateExceptionHandler</code></a> useful when you are developing non-HTML templates.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="../../freemarker/template/TemplateExceptionHandler.html" title="interface in freemarker.template">TemplateExceptionHandler</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/template/TemplateExceptionHandler.html#HTML_DEBUG_HANDLER">HTML_DEBUG_HANDLER</a></span></code>
<div class="block"><a href="../../freemarker/template/TemplateExceptionHandler.html" title="interface in freemarker.template"><code>TemplateExceptionHandler</code></a> useful when you are developing HTML templates.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="../../freemarker/template/TemplateExceptionHandler.html" title="interface in freemarker.template">TemplateExceptionHandler</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/template/TemplateExceptionHandler.html#IGNORE_HANDLER">IGNORE_HANDLER</a></span></code>
<div class="block"><a href="../../freemarker/template/TemplateExceptionHandler.html" title="interface in freemarker.template"><code>TemplateExceptionHandler</code></a> that simply skips the failing instructions, letting the template continue
executing.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="../../freemarker/template/TemplateExceptionHandler.html" title="interface in freemarker.template">TemplateExceptionHandler</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/template/TemplateExceptionHandler.html#RETHROW_HANDLER">RETHROW_HANDLER</a></span></code>
<div class="block"><a href="../../freemarker/template/TemplateExceptionHandler.html" title="interface in freemarker.template"><code>TemplateExceptionHandler</code></a> that simply re-throws the exception; this should be used
in most production systems.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../freemarker/template/TemplateExceptionHandler.html#handleTemplateException-freemarker.template.TemplateException-freemarker.core.Environment-java.io.Writer-">handleTemplateException</a></span>(<a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a>&nbsp;te,
<a href="../../freemarker/core/Environment.html" title="class in freemarker.core">Environment</a>&nbsp;env,
java.io.Writer&nbsp;out)</code>
<div class="block">Method called after a <a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template"><code>TemplateException</code></a> was raised inside a template.</div>
</td>
</tr>
</table>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a name="IGNORE_HANDLER">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>IGNORE_HANDLER</h4>
<pre>static final&nbsp;<a href="../../freemarker/template/TemplateExceptionHandler.html" title="interface in freemarker.template">TemplateExceptionHandler</a> IGNORE_HANDLER</pre>
<div class="block"><a href="../../freemarker/template/TemplateExceptionHandler.html" title="interface in freemarker.template"><code>TemplateExceptionHandler</code></a> that simply skips the failing instructions, letting the template continue
executing. It does nothing to handle the event. Note that the exception is still logged, as with all
other <a href="../../freemarker/template/TemplateExceptionHandler.html" title="interface in freemarker.template"><code>TemplateExceptionHandler</code></a>-s.</div>
</li>
</ul>
<a name="RETHROW_HANDLER">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>RETHROW_HANDLER</h4>
<pre>static final&nbsp;<a href="../../freemarker/template/TemplateExceptionHandler.html" title="interface in freemarker.template">TemplateExceptionHandler</a> RETHROW_HANDLER</pre>
<div class="block"><a href="../../freemarker/template/TemplateExceptionHandler.html" title="interface in freemarker.template"><code>TemplateExceptionHandler</code></a> that simply re-throws the exception; this should be used
in most production systems.</div>
</li>
</ul>
<a name="DEBUG_HANDLER">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>DEBUG_HANDLER</h4>
<pre>static final&nbsp;<a href="../../freemarker/template/TemplateExceptionHandler.html" title="interface in freemarker.template">TemplateExceptionHandler</a> DEBUG_HANDLER</pre>
<div class="block"><a href="../../freemarker/template/TemplateExceptionHandler.html" title="interface in freemarker.template"><code>TemplateExceptionHandler</code></a> useful when you are developing non-HTML templates. This
handler outputs the stack trace information to the client and then re-throws the exception.</div>
</li>
</ul>
<a name="HTML_DEBUG_HANDLER">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>HTML_DEBUG_HANDLER</h4>
<pre>static final&nbsp;<a href="../../freemarker/template/TemplateExceptionHandler.html" title="interface in freemarker.template">TemplateExceptionHandler</a> HTML_DEBUG_HANDLER</pre>
<div class="block"><a href="../../freemarker/template/TemplateExceptionHandler.html" title="interface in freemarker.template"><code>TemplateExceptionHandler</code></a> useful when you are developing HTML templates. This handler
outputs the stack trace information to the client, formatting it so that it will be usually
well readable in the browser, and then re-throws the exception.</div>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="handleTemplateException-freemarker.template.TemplateException-freemarker.core.Environment-java.io.Writer-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>handleTemplateException</h4>
<pre>void&nbsp;handleTemplateException(<a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a>&nbsp;te,
<a href="../../freemarker/core/Environment.html" title="class in freemarker.core">Environment</a>&nbsp;env,
java.io.Writer&nbsp;out)
throws <a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a></pre>
<div class="block">Method called after a <a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template"><code>TemplateException</code></a> was raised inside a template. The exception should be re-thrown
unless you want to suppress the exception.
<p>Note that you can check with <a href="../../freemarker/core/Environment.html#isInAttemptBlock--"><code>Environment.isInAttemptBlock()</code></a> if you are inside a <code>#attempt</code>
block, which then will handle this exception and roll back the output generated inside it.
<p>Note that <a href="../../freemarker/core/StopException.html" title="class in freemarker.core"><code>StopException</code></a>-s (raised by <code>#stop</code>) won't be captured here.
<p>Note that you shouldn't log the exception in this method unless you suppress it. If there's a concern that the
exception might won't be logged after it bubbles up from <a href="../../freemarker/template/Template.html#process-java.lang.Object-java.io.Writer-"><code>Template.process(Object, Writer)</code></a>, simply
ensure that <a href="../../freemarker/core/Configurable.html#getLogTemplateExceptions--"><code>Configurable.getLogTemplateExceptions()</code></a> is <code>true</code>.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>te</code> - The exception that occurred; don't forget to re-throw it unless you want to suppress it</dd>
<dd><code>env</code> - The runtime environment of the template</dd>
<dd><code>out</code> - This is where the output of the template is written</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template">TemplateException</a></code></dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/TemplateExceptionHandler.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../index-all.html">Index</a></li>
<li><a href="../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../freemarker/template/TemplateException.html" title="class in freemarker.template"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../freemarker/template/TemplateHashModel.html" title="interface in freemarker.template"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../index.html?freemarker/template/TemplateExceptionHandler.html" target="_top">Frames</a></li>
<li><a href="TemplateExceptionHandler.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>