You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by bu...@apache.org on 2018/04/28 13:20:51 UTC

svn commit: r1029102 - in /websites/production/tapestry/content: cache/main.pageCache runtime-exceptions.html

Author: buildbot
Date: Sat Apr 28 13:20:51 2018
New Revision: 1029102

Log:
Production update by buildbot for tapestry

Modified:
    websites/production/tapestry/content/cache/main.pageCache
    websites/production/tapestry/content/runtime-exceptions.html

Modified: websites/production/tapestry/content/cache/main.pageCache
==============================================================================
Binary files - no diff available.

Modified: websites/production/tapestry/content/runtime-exceptions.html
==============================================================================
--- websites/production/tapestry/content/runtime-exceptions.html (original)
+++ websites/production/tapestry/content/runtime-exceptions.html Sat Apr 28 13:20:51 2018
@@ -91,6 +91,15 @@
                 <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" title="Page">Page:</span>        </div>
 
         <div class="details">
+                        <a  href="runtime-exceptions.html">Runtime Exceptions</a>
+                
+                        
+                    </div>
+    </li><li>
+        <div>
+                <span class="icon aui-icon aui-icon-small aui-iconfont-page-default" title="Page">Page:</span>        </div>
+
+        <div class="details">
                         <a  href="error-page-recipe.html">Error Page Recipe</a>
                 
                         
@@ -118,13 +127,13 @@
 
 
 <p>Feedback is vitally important when developing an application, and that is one of the areas where Tapestry has always excelled.</p><p>Especially during development, requests can fail. There can be errors in templates, broken code in your application, or something unexpected.</p><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1524341981608 {padding: 0px;}
-div.rbtoc1524341981608 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1524341981608 li {margin-left: 0px;padding-left: 0px;}
-
-/*]]>*/</style></p><div class="toc-macro rbtoc1524341981608">
-<ul class="toc-indentation"><li><a  href="#RuntimeExceptions-Build-inExceptionReportPage">Build-in Exception Report Page</a></li><li><a  href="#RuntimeExceptions-DetailedExceptionReportFiles">Detailed Exception Report Files</a></li><li><a  href="#RuntimeExceptions-AjaxDetailedExceptionReports">Ajax Detailed Exception Reports</a></li><li><a  href="#RuntimeExceptions-OverridingtheHandlingofSpecificExceptions">Overriding the Handling of Specific Exceptions</a></li></ul>
-</div><h2 id="RuntimeExceptions-Build-inExceptionReportPage">Build-in Exception Report Page</h2><p>Tapestry has a built-in exception report page that captures an amazing wealth of information:</p><p><span class="confluence-embedded-file-wrapper confluence-embedded-manual-size"><img class="confluence-embedded-image confluence-content-image-border" width="500" src="runtime-exceptions.data/Exception_Stack_Trace.png"></span></p><p><span class="confluence-embedded-file-wrapper confluence-embedded-manual-size"><img class="confluence-embedded-image confluence-content-image-border" width="500" src="runtime-exceptions.data/Exception_Request.png"></span></p><p><span class="confluence-embedded-file-wrapper confluence-embedded-manual-size"><img class="confluence-embedded-image confluence-content-image-border" height="443" width="500" src="runtime-exceptions.data/Application_Exception.png"></span></p><p>This exception report features:</p><ul><li>The full stack of exceptions, top to bottom.</li><
 li>All non-null properties of each exception.</li><li>The stack trace&#160;<em>at the deepest level</em>.</li><li>Key&#160;<strong>request</strong> properties, header, attributes, and parameters.</li><li>Key&#160;<strong>session</strong><em>&#160;</em>propertes</li><li>A break down of the&#160;<em>thread</em> in your application</li><li>A listing of all JVM System properties</li></ul><h2 id="RuntimeExceptions-DetailedExceptionReportFiles">Detailed Exception Report Files</h2><p>In addition, Tapestry will write a text file for the exception with a similar level of detail. The default location for the detailed exception report files is a relative directory <em>build/exceptions</em>. You can configure the location by setting <a  class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/SymbolConstants.html#EXCEPTION_REPORTS_DIR">SymbolConstants.EXCEPTION_REPORTS_DIR</a>.</p><p>If you want to turn off the writing of detailed exception reports files to th
 e file system, you can add the following to your application module (usually AppModule.java):</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>AppModule.java (partial)</b></div><div class="codeContent panelContent pdl">
+div.rbtoc1524921633168 {padding: 0px;}
+div.rbtoc1524921633168 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1524921633168 li {margin-left: 0px;padding-left: 0px;}
+
+/*]]>*/</style></p><div class="toc-macro rbtoc1524921633168">
+<ul class="toc-indentation"><li><a  href="#RuntimeExceptions-Build-inExceptionReportPage">Build-in Exception Report Page</a></li><li><a  href="#RuntimeExceptions-AjaxDetailedExceptionReports">Ajax Detailed Exception Reports</a></li><li><a  href="#RuntimeExceptions-DetailedExceptionReportFiles">Detailed Exception Report Files</a></li><li><a  href="#RuntimeExceptions-OverridingtheHandlingofSpecificExceptions">Overriding the Handling of Specific Exceptions</a></li></ul>
+</div><h2 id="RuntimeExceptions-Build-inExceptionReportPage">Build-in Exception Report Page</h2><p>Tapestry has a built-in exception report page that captures an amazing wealth of information:</p><p><span class="confluence-embedded-file-wrapper confluence-embedded-manual-size"><img class="confluence-embedded-image confluence-content-image-border" width="500" src="runtime-exceptions.data/Exception_Stack_Trace.png"></span></p><p><span class="confluence-embedded-file-wrapper confluence-embedded-manual-size"><img class="confluence-embedded-image confluence-content-image-border" width="500" src="runtime-exceptions.data/Exception_Request.png"></span></p><p><span class="confluence-embedded-file-wrapper confluence-embedded-manual-size"><img class="confluence-embedded-image confluence-content-image-border" height="443" width="500" src="runtime-exceptions.data/Application_Exception.png"></span></p><p>This exception report features:</p><ul><li>The full stack of exceptions, top to bottom.</li><
 li>All non-null properties of each exception.</li><li>The stack trace&#160;<em>at the deepest level</em>.</li><li>Key&#160;<strong>request</strong> properties, header, attributes, and parameters.</li><li>Key&#160;<strong>session</strong><em>&#160;</em>propertes</li><li>A break down of the&#160;<em>thread</em> in your application</li><li>A listing of all JVM System properties</li></ul><h2 id="RuntimeExceptions-AjaxDetailedExceptionReports">Ajax Detailed Exception Reports</h2><p>A similar detailed exception report is also built-in to Tapestry's Ajax support. When an Ajax request fails, Tapestry's client-side code will create an &lt;iframe&gt; to present this same information:</p><p><span class="confluence-embedded-file-wrapper confluence-embedded-manual-size"><img class="confluence-embedded-image confluence-content-image-border" height="359" width="500" src="runtime-exceptions.data/Exception_Ajax.png"></span></p><h2 id="RuntimeExceptions-DetailedExceptionReportFiles">Detailed Exceptio
 n Report Files</h2><p>In addition, Tapestry will write a text file for the exception with a similar level of detail. The default location for the detailed exception report files is a relative directory <em>build/exceptions</em>. You can configure the location by setting <a  class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/SymbolConstants.html#EXCEPTION_REPORTS_DIR">SymbolConstants.EXCEPTION_REPORTS_DIR</a>.</p><p>If you want to turn off the writing of detailed exception reports files to the file system, you can add the following to your application module (usually AppModule.java):</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>AppModule.java (partial)</b></div><div class="codeContent panelContent pdl">
 <pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">     /**
      * By default, Tapestry's ExceptionReporter implementation writes verbose text files to the
      * "build/exceptions" directory. This replaces that implementation with one that does nothing.
@@ -138,7 +147,7 @@ div.rbtoc1524341981608 li {margin-left:
             }
         };
     }</pre>
-</div></div><h2 id="RuntimeExceptions-AjaxDetailedExceptionReports">Ajax Detailed Exception Reports</h2><p>A similar detailed exception report is also built-in to Tapestry's Ajax support. When an Ajax request fails, Tapestry's client-side code will create an &lt;iframe&gt; to present this same information:</p><p><span class="confluence-embedded-file-wrapper confluence-embedded-manual-size"><img class="confluence-embedded-image confluence-content-image-border" height="359" width="500" src="runtime-exceptions.data/Exception_Ajax.png"></span></p><h2 id="RuntimeExceptions-OverridingtheHandlingofSpecificExceptions">Overriding the Handling of Specific Exceptions</h2><p>In production, you may want to <a  href="overriding-exception-reporting.html">override the exception report page</a> (even if you keep the text file output). However, Tapestry's (from version 5.4) default exception reporter also allows you to handle specific exception types in a pre-determined manner, similar to how servlet
  spec's standard error-page/exception-type configuration option allows you to map exception types to URLs. At times, it's simpler to just catch exceptions at the outermost layer of your application instead of carrying a typed exception through multiple layers of abstractions just so you could show a sensible error message to the user, especially if you can't do anything more clever about it anyway. Exception type mapping in Tapestry is much more powerful than what the servlet spec dictates. If your email service or an external payment service goes down, you can't do much more than display an error message to the user, so why would you need to implement separate pages for each exception? Often, it'd be nicer if you could just reuse the page template for any fatal exception and simply display a different error message. In addition to contributing handlers for specific types of exceptions, you may also provide context for rendering the same error page template with a different output.<
 /p><p>You can contribute an error page, mapping it to an exception type:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>AppModule.java (partial)</b></div><div class="codeContent panelContent pdl">
+</div></div><h2 id="RuntimeExceptions-OverridingtheHandlingofSpecificExceptions">Overriding the Handling of Specific Exceptions</h2><p>In production, you may want to <a  href="overriding-exception-reporting.html">override the exception report page</a> (even if you keep the text file output). However, Tapestry's (from version 5.4) default exception reporter also allows you to handle specific exception types in a pre-determined manner, similar to how servlet spec's standard error-page/exception-type configuration option allows you to map exception types to URLs. At times, it's simpler to just catch exceptions at the outermost layer of your application instead of carrying a typed exception through multiple layers of abstractions just so you could show a sensible error message to the user, especially if you can't do anything more clever about it anyway. Exception type mapping in Tapestry is much more powerful than what the servlet spec dictates. If your email service or an external paym
 ent service goes down, you can't do much more than display an error message to the user, so why would you need to implement separate pages for each exception? Often, it'd be nicer if you could just reuse the page template for any fatal exception and simply display a different error message. In addition to contributing handlers for specific types of exceptions, you may also provide context for rendering the same error page template with a different output.</p><p>You can contribute an error page, mapping it to an exception type:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>AppModule.java (partial)</b></div><div class="codeContent panelContent pdl">
 <pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">    public void contributeExceptionHandler(MappedConfiguration&lt;Class, Class&gt; configuration) {
         configuration.add(SmtpNotRespondingException.class, ServiceFailure.class);
     }</pre>