code: @Override
      protected void fireError(int type, String propName, Object propValue, Throwable ex)
      {
          if (errorListeners == null || errorListeners.size() == 0) {
              return;
          }
  
          ConfigurationErrorEvent event = createErrorEvent(type, propName, propValue, ex);
          for (ConfigurationErrorListener l: errorListeners) {
              try {
                  l.configurationError(event);
              } catch (Throwable e) {
                  logger.error("Error firing configuration error event", e);
              }
          }
       }
docs: Creates an error event and calls {@link ConfigurationErrorListener#configurationError(ConfigurationErrorEvent)}
  for all listeners while catching Throwable.