
[[_adapter_error_handling]]
==== Error handling

{project_name} has some error handling facilities for servlet based client adapters.
When an error is encountered in authentication, {project_name} will call `HttpServletResponse.sendError()`.
You can set up an error-page within your `web.xml` file to handle the error however you want.
{project_name} can throw 400, 401, 403, and 500 errors.

[source,xml]
----
<error-page>
    <error-code>403</error-code>
    <location>/ErrorHandler</location>
</error-page>
----    

{project_name} also sets a `HttpServletRequest` attribute that you can retrieve.
The attribute name is `org.keycloak.adapters.spi.AuthenticationError`, which should be cast to `org.keycloak.adapters.OIDCAuthenticationError`.

For example:

[source,java]
----
import org.keycloak.adapters.OIDCAuthenticationError;
import org.keycloak.adapters.OIDCAuthenticationError.Reason;
...

OIDCAuthenticationError error = (OIDCAuthenticationError) httpServletRequest
    .getAttribute('org.keycloak.adapters.spi.AuthenticationError');

Reason reason = error.getReason();
System.out.println(reason.name());
----

