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, setTokensfinishLocalSetup, getCustomMessages, getId, getMessageBundle, getSeverity, getSeverityLevel, setId, setSeverityconfigure, contextualize, getConfiguration, setupChildpublic static final String MSG_KEY
public IllegalCatchCheck()
public void setIllegalClassNames(String... classNames)
classNames - array of illegal exception classespublic int[] getDefaultTokens()
AbstractCheckgetDefaultTokens in class AbstractCheckTokenTypespublic int[] getRequiredTokens()
AbstractCheckgetRequiredTokens in class AbstractCheckTokenTypespublic int[] getAcceptableTokens()
AbstractCheckgetAcceptableTokens in class AbstractCheckTokenTypespublic void visitToken(DetailAST detailAST)
AbstractCheckvisitToken in class AbstractCheckdetailAST - the token to processCopyright © 2001–2020. All rights reserved.