AEM 6.4 has reached the end of extended support and this documentation is no longer updated. For further details, see our technical support periods. Find the supported versions here.
AEM comes with a standard error handler for handling HTTP errors; for example, by showing:
System provided scripts exist (under /libs/sling/servlet/errorhandler
) to respond to error codes, by default the following are available with a standard CQ instance:
AEM is based on Apache Sling, so see https://sling.apache.org/site/errorhandling.html for detailed information about Sling Error Handling.
On an author instance, CQ WCM Debug Filter is enabled by default. This always results in the response code 200. The default error handler responds by writing the full stack trace to the response.
On a publish instance, CQ WCM Debug Filter is always disabled (even if configured as enabled).
You can develop your own scripts to customize the pages shown by the error handler when an error is encountered. Your customized pages will be created under /apps
and overlay the default pages (that are under /libs
).
See Using Overlays for more details.
In the repository, copy the default script(s):
/libs/sling/servlet/errorhandler/
/apps/sling/servlet/errorhandler/
As the destination path does not exist by default you will need to create it when doing this for the first time.
Navigate to /apps/sling/servlet/errorhandler
. Here you can either:
Save the changes and test.
The 404.jsp and 403.jsp handlers have been specifically designed to cater for CQ5 authentication; in particular, to allow for system login in the case of these errors.
Therefore, replacement of these two handlers should be done with great care.
HTTP 500 errors are caused by server side exceptions.
When request processing results in an exception, the Apache Sling framework (that AEM is built on):
logs the exception
returns:
in the body of the response.
By customizing the pages shown by the error handler a 500.jsp
script can be created. However, it is only used if HttpServletResponse.sendError(500)
is executed explicitly; i.e. from an exception catcher.
Otherwise, the response code is set to 500, but the 500.jsp
script is not executed.
To handle 500 errors, the file name of the error handler script must be the same as the exception class (or superclass). To handle all such exceptions you can create a script /apps/sling/servlet/errorhandler/Throwable.js
p or /apps/sling/servlet/errorhandler/Exception.jsp
.
On an author instance, CQ WCM Debug Filter is enabled by default. This always results in the response code 200. The default error handler responds by writing the full stack trace to the response.
For a custom error-handler, responses with code 500 are needed - so the CQ WCM Debug Filter needs to be disabled. This ensures that the response code 500 is returned, which in turn triggers the correct Sling error-handler.
On a publish instance, CQ WCM Debug Filter is always disabled (even if configured as enabled).