検証環境
Checkstyleバージョン:10.3.3
Javaバージョン:17
チェック概要
チェック追加バージョン |
---|
Checkstyle 6.4 |
空のcatchブロックがあるかどうかをチェックする。
デフォルトでは、catchブロック内部にコメントのみを持つcatchブロックは空とみなさない。
このチェックにはオプションが2つあるが、片方にマッチングすれば、対象のcatchブロックは空とみなされなくなる。
プロパティ
プロパティ | 型 | デフォルト値 | 説明 | 追加バージョン |
---|---|---|---|---|
exceptionVariableName | Pattern | "^$" |
空のcatchブロックを許可する例外の変数名の正規表現 | 6.4 |
commentFormat | Pattern | ".*" |
空のcatchブロックを許可する最初のコメントの正規表現 | 6.4 |
設定+チェック実行結果
プロパティ設定なし
設定ファイル記述方法
<module name="Checker"> <module name="TreeWalker"> <module name="EmptyCatchBlock"/> </module> </module>
チェック実行例
// NG catchブロックが空なのでNG try { throw new RuntimeException(); } catch (RuntimeException expected) { } // NG catchブロックが空なのでNG try { throw new RuntimeException(); } catch (RuntimeException o) { } // OK catchブロックにコメントがあるのでOK try { throw new RuntimeException(); } catch (RuntimeException ignore) { // no handling } // OK catchブロックにコメントがあるのでOK try { throw new RuntimeException(); } catch (RuntimeException ex) { // This is expected }
プロパティ設定あり
exceptionVariableName
空のcatchブロックを許可する例外の変数名の正規表現を設定する。
設定ファイル記述方法
<module name="Checker"> <module name="TreeWalker"> <module name="EmptyCatchBlock"> <property name="exceptionVariableName" value="expected|ignore"/> </module> </module> </module>
チェック実行例
// OK 「exceptionVariableName」に指定の変数名と合致するため空でもOK try { throw new RuntimeException(); } catch (RuntimeException expected) { } // NG 「exceptionVariableName」に指定の変数名と合致しないため空は許容されない try { throw new RuntimeException(); } catch (RuntimeException o) { } // OK 「exceptionVariableName」に指定の変数名と合致するため空でもOK try { throw new RuntimeException(); } catch (RuntimeException ignore) { // no handling } // OK catchブロックにコメントがあるのでOK try { throw new RuntimeException(); } catch (RuntimeException ex) { // This is expected }
commentFormat
空のcatchブロックを許可する最初のコメントの正規表現を設定する。
設定ファイル記述方法
<module name="Checker"> <module name="TreeWalker"> <module name="EmptyCatchBlock"> <property name="commentFormat" value="This is expected"/> </module> </module> </module>
チェック実行例
// NG catchブロックが空なのでNG try { throw new RuntimeException(); } catch (RuntimeException expected) { } // NG catchブロックが空なのでNG try { throw new RuntimeException(); } catch (RuntimeException o) { } // NG 「commentFormat」に指定のコメントと合致しないため空は許容されない try { throw new RuntimeException(); } catch (RuntimeException ignore) { // no handling } // OK catchブロックの最初のコメントに「commentFormat」に指定のコメントがあるのでOK try { throw new RuntimeException(); } catch (RuntimeException ex) { // This is expected }