minimize

Strict Exception

例外に関する(厳密な)ルールセットです。

AvoidCatchingThrowable

Throwable をCatchしている箇所を検出します。
これは全ての例外およびエラーを捕らえてしまう為、
例えば OutOfMemoryError のような致命的エラーがスローされない危険性があります。

SignatureDeclareThrowsException

Exceptionをスローするメソッドを検出します。
これは全ての例外をカバーする為、実際にどんな例外がスローされるのかを
理解することが難しくなります。

ExceptionAsFlowControl

ややこしい例外をスローしている箇所を検出します。

try {
  try {
    // ここで例外が発生すると (A) に処理が移る
  } catch (Exception e) {
    // (A)
    throw new WrapperException(e); // さらにここで (B) に処理が移る
  }
} catch (WrapperException e) {
  // (B)
}

AvoidCatchingNPE

NullPointerException をCatchしている箇所を検出します。
この例外をCatchする前にnullチェックをするべきです。

AvoidThrowingRawExceptionTypes

直接Exceptionをスローしている箇所を検出します。
通常、Exceptionをサブクラス化した例外をスローするべきです。

AvoidThrowingNullPointerException

NullPointerException をスローしている箇所を検出します。
この例外は明示的にスローすべき例外ではありません。

AvoidRethrowingException

catchした例外をそのまま上にthrowしている箇所を検出します。

void bar throws SomeException {
  try {
    ...
  } catch (SomeException e) {
    throw e; // ただ上に投げているだけ。だったらtry~catch句を使わない方が良い
  }
}

DoNotExtendJavaLangError

java.lang.Error をextendしたクラスが定義されています。

public class Foo extends Error { }

DoNotThrowExceptionInFinally

finally 節で例外をthrowしている箇所を検出します。

[コメント(0)]