Class AvoidHidingCauseExceptionCheck
- java.lang.Object
-
- com.puppycrawl.tools.checkstyle.api.AutomaticBean
-
- com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter
-
- com.puppycrawl.tools.checkstyle.api.AbstractCheck
-
- com.github.sevntu.checkstyle.checks.coding.AvoidHidingCauseExceptionCheck
-
- All Implemented Interfaces:
com.puppycrawl.tools.checkstyle.api.Configurable
,com.puppycrawl.tools.checkstyle.api.Contextualizable
public class AvoidHidingCauseExceptionCheck extends com.puppycrawl.tools.checkstyle.api.AbstractCheck
This check prevents new exception throwing inside try/catch blocks without providing current exception cause. New exception should propagate up to a higher-level handler with exact cause to provide a full stack trace for the problem.
Rationale: When handling exceptions using try/catch blocks junior developers may lose the original/cause exception object and information associated with it.
Examples:
1. Cause exception will be lost because current catch block contains another exception throwing.public void foo() { RuntimeException r; catch (java.lang.Exception e) { //your code throw r; } }
2. Cause exception will be lost because current catch block doesn`t contains another exception throwing.catch (IllegalStateException e) { //your code throw new RuntimeException(); } catch (IllegalStateException e) { //your code throw new RuntimeException("Runtime Exception!"); }
- Since:
- 1.8.0
- Author:
- Daniil Yaroslavtsev, Ilja Dubinin
-
-
Constructor Summary
Constructors Constructor Description AvoidHidingCauseExceptionCheck()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int[]
getAcceptableTokens()
int[]
getDefaultTokens()
int[]
getRequiredTokens()
void
visitToken(com.puppycrawl.tools.checkstyle.api.DetailAST detailAST)
-
Methods inherited from class com.puppycrawl.tools.checkstyle.api.AbstractCheck
beginTree, clearViolations, destroy, finishTree, getFileContents, getFilePath, getLine, getLineCodePoints, getLines, getTabWidth, getTokenNames, getViolations, init, isCommentNodesRequired, leaveToken, log, log, log, setFileContents, setTabWidth, setTokens
-
Methods inherited from class com.puppycrawl.tools.checkstyle.api.AbstractViolationReporter
finishLocalSetup, getCustomMessages, getId, getMessageBundle, getSeverity, getSeverityLevel, setId, setSeverity
-
-
-
-
Field Detail
-
MSG_KEY
public static final String MSG_KEY
A key is pointing to the warning message text in "messages.properties" file.- See Also:
- Constant Field Values
-
-
Method Detail
-
getDefaultTokens
public int[] getDefaultTokens()
- Specified by:
getDefaultTokens
in classcom.puppycrawl.tools.checkstyle.api.AbstractCheck
-
getAcceptableTokens
public int[] getAcceptableTokens()
- Specified by:
getAcceptableTokens
in classcom.puppycrawl.tools.checkstyle.api.AbstractCheck
-
getRequiredTokens
public int[] getRequiredTokens()
- Specified by:
getRequiredTokens
in classcom.puppycrawl.tools.checkstyle.api.AbstractCheck
-
visitToken
public void visitToken(com.puppycrawl.tools.checkstyle.api.DetailAST detailAST)
- Overrides:
visitToken
in classcom.puppycrawl.tools.checkstyle.api.AbstractCheck
-
-