Current implementation of tag exception processing is not correct. One can't define which tag can and which can't swallow exceptions and continue page processing.
I'm thinking about introductions of "error boundaries".
Let any tag exception fail whole page.
Let template author decide which group of tags can transiently fail.
...
<!-- Error boundary -->
<error:boundary name="main">
...
</error:boundary>
<!-- Show error details -->
<web:out error:boundaryFailed="main">
<error:exceptionList name="main"> <!-- Optional filter -->
<ui:forEach items="error:exceptionList">
<pre>
<web:out text="error:exceptionType" />
<web:out text="error:exceptionMessage" />
<web:out text="error:exceptionTrace" />
</pre>
</ui:forEach>
</error:exceptionList>
</web:out>
<!-- Show if boundary passed -->
<web:out error:boundaryPassed="main">
...
</web:out>
<!-- Shorthand for development details and standard "500" view -->
<error:exceptionView name="main" />
TODO
[x] Drop try-catch from template parser
[x] Drop edit model support for exceptions
[x] Error boundary
[x] Option to skip logging the exception
[x] Extra params for log.
[x] Error list
[x] Failed decorator
[x] Passed decorator
[x] Default exception view
[x] Default boundary in Web::processRequestNG (aka 500)
Evolution of #285.
TODO
Web::processRequestNG
(aka 500)