public final class IllegalCatchCheck extends AbstractCheck
Checks that certain exception types do not appear in a catch
statement.
Rationale: catching java.lang.Exception
, java.lang.Error
or
java.lang.RuntimeException
is almost never acceptable.
Novice developers often simply catch Exception in an attempt to handle
multiple exception classes. This unfortunately leads to code that inadvertently
catches NullPointerException
, OutOfMemoryError
, etc.
illegalClassNames
- Specify exception class names to reject.
Type is java.lang.String[]
.
Default value is Error, Exception, RuntimeException, Throwable, java.lang.Error,
java.lang.Exception, java.lang.RuntimeException, java.lang.Throwable
.
To configure the check:
<module name="IllegalCatch"/>
Example:
try { // some code here } catch (Exception e) { // violation } try { // some code here } catch (ArithmeticException e) { // OK } catch (Exception e) { // violation, catching Exception is illegal and order of catch blocks doesn't matter } try { // some code here } catch (ArithmeticException | Exception e) { // violation, catching Exception is illegal } try { // some code here } catch (ArithmeticException e) { // OK }
To configure the check to override the default list with ArithmeticException and OutOfMemoryError:
<module name="IllegalCatch"> <property name="illegalClassNames" value="ArithmeticException, OutOfMemoryError"/> </module>
Example:
try { // some code here } catch (OutOfMemoryError e) { // violation } try { // some code here } catch (ArithmeticException e) { // violation } try { // some code here } catch (NullPointerException e) { // OK } catch (OutOfMemoryError e) { // violation } try { // some code here } catch (ArithmeticException | Exception e) { // violation } try { // some code here } catch (Exception e) { // OK }
Parent is com.puppycrawl.tools.checkstyle.TreeWalker
Violation Message Keys:
illegal.catch
AutomaticBean.OutputStreamOptions
Modifier and Type | Field and Description |
---|---|
static String |
MSG_KEY
A key is pointing to the warning message text in "messages.properties"
file.
|
Constructor and Description |
---|
IllegalCatchCheck() |
Modifier and Type | Method and Description |
---|---|
int[] |
getAcceptableTokens()
The configurable token set.
|
int[] |
getDefaultTokens()
Returns the default token a check is interested in.
|
int[] |
getRequiredTokens()
The tokens that this check must be registered for.
|
void |
setIllegalClassNames(String... classNames)
Setter to specify exception class names to reject.
|
void |
visitToken(DetailAST detailAST)
Called to process a token.
|
beginTree, clearMessages, destroy, finishTree, getFileContents, getLine, getLines, getMessages, getTabWidth, getTokenNames, init, isCommentNodesRequired, leaveToken, log, log, log, setFileContents, setTabWidth, setTokens
finishLocalSetup, getCustomMessages, getId, getMessageBundle, getSeverity, getSeverityLevel, setId, setSeverity
configure, contextualize, getConfiguration, setupChild
public static final String MSG_KEY
public IllegalCatchCheck()
public void setIllegalClassNames(String... classNames)
classNames
- array of illegal exception classespublic int[] getDefaultTokens()
AbstractCheck
getDefaultTokens
in class AbstractCheck
TokenTypes
public int[] getRequiredTokens()
AbstractCheck
getRequiredTokens
in class AbstractCheck
TokenTypes
public int[] getAcceptableTokens()
AbstractCheck
getAcceptableTokens
in class AbstractCheck
TokenTypes
public void visitToken(DetailAST detailAST)
AbstractCheck
visitToken
in class AbstractCheck
detailAST
- the token to processCopyright © 2001–2020. All rights reserved.