Is there a way to make eclipse report a general “c

2019-05-06 02:06发布

问题:

I'm trying to encourage a best practice of not catching general exceptions in Java code. eg:

try {
  ...
} catch (Exception e) {  // bad!
  ...
}

Is there a way to flag this as an error/warning in Eclipse?

I know PMD picks this up, but I'd rather avoid integrating it into everyone's build environment at the moment.

回答1:

You can use Checkstyle eclipse plugin to do the same. Check 'IllegalCatch' section at documentation



回答2:

FindBugs can report this:

REC: Exception is caught when Exception is not thrown (REC_CATCH_EXCEPTION)

This method uses a try-catch block that catches Exception objects, but Exception is not thrown within the try block, and RuntimeException is not explicitly caught. It is a common bug pattern to say try { ... } catch (Exception e) { something } as a shorthand for catching a number of types of exception each of whose catch blocks is identical, but this construct also accidentally catches RuntimeException as well, masking potential bugs.



回答3:

Running the FindBugs, CheckStyle or PMD on every build would slow everyone's builds down, and I imagine that is why you are looking at the Eclipse approach. Unfortunately, that may also be problematic, depending on availability (and robustness) of plugins. Plus, you'll still take a performance hit in incremental and (especially) full project builds.

Another alternative would be to set up a Hudson continuous integration server and configure it to run style checkers, coverage tools and so on, tracking the results over time using the Sonar plugin.



回答4:

As far as I can tell, it's not in the list at Window -> Preferences -> Java -> Compiler -> Errors/Warnings, and thus not possible - unless you fancy writing your own ecliple plugin.