Data model
Error handling
In the OpenMRS core there are 2 pages where uncaught exceptions are handled, which are uncaughtException.jsp and errorHandler.jsp. When uncaught exception occurred one of those pages is displayed and Error Logging Module is notified by about it via extension points in those pages. To get exception and detail information about it is used an attribute of the request "javax.servlet.error.exception".
Error handling at the application level
Exceptions thrown by code going threw Servlets and Controllers are handled by uncaughtException.jsp because of the web.xml entry.
... <error-page> <exception-type>java.lang.Exception</exception-type> <location>/uncaughtException</location> </error-page> <servlet-mapping> <servlet-name>openmrs</servlet-name> <url-pattern>/uncaughtException</url-pattern> </servlet-mapping> ...
To get those types of exceptions is used extension point in the uncaughtException.jsp.
... <openmrs:extensionPoint pointId="org.openmrs.uncaughtException" type="html" /> ...
Error handling at the page level
Exceptions thrown from the .tag files and jsps including embedded scriptlets are handled by errorHandler.jsp which is defined as the default error page via a jsp directive.
<%@ page isErrorPage="true" import="java.io.*" %> ...
<%@ page errorPage="/errorhandler.jsp" %> ...
To get those types of exceptions is used extension point in the errorHandler.jsp.
... <openmrs:extensionPoint pointId="org.openmrs.errorHandler" type="html" /> ...
Ignored exceptions
To allow admin to set which errors to ignore to prevent large numbers of errors getting into table in the Error Logging Module is used manage page:
Ignored exceptions are saved in the global properties:
... <globalProperty> <property>${project.parent.artifactId}.ignore.errors</property> <defaultValue></defaultValue> <description>Allows admin to set which errors to ignore to prevent large numbers of errors getting into table</description> </globalProperty> ...
Authentication related exceptions are ignored in the module by default.
... public static final String[] ERRROR_LOGGING_DEDAULT_IGNORED_EXCEPTION = new String[] { "org.openmrs.api.APIAuthenticationException", "org.openmrs.api.context.ContextAuthenticationException" }; ...