core/src/main/java/org/springframework/security/authentication/DefaultAuthenticationEventPublisher.java
@SuppressWarnings({ "unchecked" })
	public void setAdditionalExceptionMappings(Properties additionalExceptionMappings) {
		Assert.notNull(additionalExceptionMappings,
				"The exceptionMappings object must not be null");
		for (Object exceptionClass : additionalExceptionMappings.keySet()) {
			String eventClass = (String) additionalExceptionMappings.get(exceptionClass);
			try {
				Class<?> clazz = getClass().getClassLoader().loadClass(eventClass);
				Assert.isAssignable(AbstractAuthenticationFailureEvent.class, clazz);
				addMapping((String) exceptionClass,
						(Class<? extends AbstractAuthenticationFailureEvent>) clazz);
			}
			catch (ClassNotFoundException e) {
				throw new RuntimeException("Failed to load authentication event class "
						+ eventClass);
			}
		}
	}
@SuppressWarnings({ "unchecked" })
	public void setAdditionalExceptionMappings(Properties additionalExceptionMappings) {
		Assert.notNull(additionalExceptionMappings,
				"The exceptionMappings object must not be null");
		for (Object exceptionClass : additionalExceptionMappings.keySet()) {
			String eventClass = (String) additionalExceptionMappings.get(exceptionClass);
			try {
				Class<?> clazz = getClass().getClassLoader().loadClass(eventClass);
				Assert.isAssignable(AbstractAuthenticationFailureEvent.class, clazz);
				addMapping((String) exceptionClass,
						(Class<? extends AbstractAuthenticationFailureEvent>) clazz);
			}
			catch (ClassNotFoundException e) {
				throw new RuntimeException("Failed to load authentication event class "
						+ eventClass);
			}
		}
	}
Sets additional exception to event mappings. These are automatically merged with
the default exception to event mappings that <code>ProviderManager</code> defines.

@param additionalExceptionMappings where keys are the fully-qualified string name
of the exception class and the values are the fully-qualified string name of the
event class to fire.