Since you know that we have dozens of places in the code with this thing, do you care posting a dozen of them here?
AbstractCommandLineEnvironment.java:
} catch (ProcessingException pe) {
throw new CascadingIOException("ProcessingException: " + pe, pe);
}HTMLTransformer.java (this is wicked!):
} catch (ProcessingException e) {
e.printStackTrace();
}XMidiSerializer.java (does it twice):
} catch (ProcessingException e) {
throw new SAXException(e);
} catch (IOException e) {AuthenticationContext.java (at least we rethrow a runtime exception here):
} catch (ProcessingException pe) {
throw new CascadingRuntimeException("Unable to create simple context.", pe);
}
DefaultHandlerManager.java:
} catch (ProcessingException se) {
throw new ConfigurationException("Exception during configuration of handler: " + name, se);
}
PipelineAuthenticator.java (might be legit here, but if it is, should use "warn", shouldn't it?):
} catch (ProcessingException local) {
this.getLogger().error("authenticator: " + local.getMessage(), local);
exceptionMsg = local.getMessage();
}XMLDBSource.java:
} catch (ProcessingException pe) {
throw new SAXException("ProcessingException", pe);
}SQLTransformer.java (does it twice):
} catch (ProcessingException pe) {
throw new SAXException(pe);
}CachingSource.java (does it three times):
catch(ProcessingException e) {
throw new CascadingIOException("Failure storing response.", e);
}BookmarkAction.java:
} catch (ProcessingException se) {
throw new ParameterException("Unable to read configuration from " + configurationFile, se);
} catch (SAXException se) {
ApplicationCopletAdapter.java (swallowed twice):
catch (ProcessingException ex) {
getLogger().error("Could not create new coplet instance", ex);
}
...
catch (ProcessingException pe) {
getLogger().error(
"Error while getting portal application configuration for coplet "
+ coplet.getId(),
pe);
}DefaultLayoutFactory.java:
} catch (ProcessingException pe) {
throw new CascadingRuntimeException("Exception during removal.", pe);
}BasketLayoutManagerImpl.java (swallowed three times, logged once):
} catch (ProcessingException pe) {
this.getLogger().warn("Unable to create new instance.", pe);
} catch (ServiceException se) {DASLTransformer.java:
} catch (ProcessingException e) {
throw new SAXException("Unable to fetch the query data:", e);
}WebDAVRepository.java (swallowed):
} catch (ProcessingException pe) {
this.getLogger().error("Error saving dom to: " + this.repoBaseUrl + uri, pe);
}
WebDAVRepositoryPropertyHelper.java (swallowed):
} catch (ProcessingException pe) {
this.getLogger().error("Error serializing node " + value, pe);
}That's 23, then I stopped pasting. But considering all the catch clauses for ProcessingException and its subclasses we have:
ProcessingException: 64 occurences ConnectionResetException: 4 occurences ResourceNotFoundException: 10 occurrences
But ProcessingException is just one example. Avalon's CascadingException has 14 children exception classes. For instance, org.apache.avalon.framework.configuration.ConfigurationException, which is heavily used by CForms for doing things like:
throw new ConfigurationException("Convertor defined in plain attribute unavailable.", e);
Now, don't tell me that distributing an incorrect configuration file is not a programming error. Do contracts also cover the case of programming errors? I suspect this should be a runtime exception. Better yet, when we have Java 1.4 as a requirement, this should be:
assert false, "Convertor defined in plain attribute unavailable.";
Ugo
