Hi folks, Sonar is complaining that in 34 cases[1] we're catching Throwable, which is not recommended as it ends up catching java.lang.Error messages (http://docs.oracle.com/javase/7/docs/api/java/lang/Error.html) for non-application system problems that should instead percolate up to the JDK and/or application server to be handled and reported at that level. The googling I've done ([2] for example) tends to agree with Sonar outside of a few special circumstances (e.g., calling a poorly written 3rd party library that throws Errors for normal app exceptions).

I'd like to switch them to catching Exception() instead (which has its own headaches[3], but is an improvement), which lets the java.lang.Errors pass to the JDK and/or servlet container. If it turns out in a few of the cases it might actually be better to catch Throwable (looking at the 34, I'm not seeing anything though), we can re-instate it in those cases, but this time just add a comment on why we're catching throwable. WDYT?

Thanks,
Glen

[1] https://analysis.apache.org/drilldown/issues/145470?&rule=pmd%3AAvoidCatchingThrowable&rule_sev=CRITICAL&severity=CRITICAL [2] http://stackoverflow.com/questions/6083248/is-it-a-bad-practice-to-catch-the-throwable
http://stackoverflow.com/questions/352780/when-to-catch-java-lang-error
[3] http://doc.nuxeo.com/display/CORG/Catching+Exceptions

Reply via email to