grails-views
grails-views copied to clipboard
error creating GroovyPagesException if nested exception has no stack trace
GroovyPageView#createGroovyPageException(..) expects the exception that it is building around to have a stack trace. It is possible for an exception not to have a stack trace. This causes a problem in the following code:
StackTraceElement[] stackTrace = exception.getStackTrace();
String className = stackTrace[0].getClassName();
Stack trace:
java.lang.ArrayIndexOutOfBoundsException: 0
at org.grails.web.servlet.view.GroovyPageView.createGroovyPageException(GroovyPageView.java:118)
at org.grails.web.servlet.view.GroovyPageView.handleException(GroovyPageView.java:112)
at org.grails.web.servlet.view.GroovyPageView.renderTemplate(GroovyPageView.java:80)
at org.grails.web.servlet.view.AbstractGrailsView.renderWithinGrailsWebRequest(AbstractGrailsView.java:71)
at org.grails.web.servlet.view.AbstractGrailsView.renderMergedOutputModel(AbstractGrailsView.java:55)
at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303)
at org.grails.web.sitemesh.GrailsLayoutView.renderInnerView(GrailsLayoutView.java:150)
at org.grails.web.sitemesh.GrailsLayoutView.obtainContent(GrailsLayoutView.java:128)
at org.grails.web.sitemesh.GrailsLayoutView.renderTemplate(GrailsLayoutView.java:63)
at org.grails.web.servlet.view.AbstractGrailsView.renderWithinGrailsWebRequest(AbstractGrailsView.java:71)
at org.grails.web.servlet.view.AbstractGrailsView.renderMergedOutputModel(AbstractGrailsView.java:55)
at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303)
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1286)
at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1041)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:984)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
...
Steps to Reproduce
This is not an easily reproducible bug.
Expected Behaviour
I expect to see the original error in my log files or on an error page.
Actual Behaviour
The log files contain a stack trace from the process of creating a nesting exception, losing the context of the underlying problem.
Environment Information
- Operating System: Centos 6.9
- Grails Version: 3.2.1
- JDK Version: Oracle 1.8.0_171
- Container Version (If Applicable): n/a