14

パラメータがnullであってはならないなど、メソッドの引数に対してnullチェックを行いたいです。assertNotNull("Map should not be null", filePaths);Java コードでこのようなものを使用しても問題ありませんか? 避けようとしている

if(filePaths == null){
  throw new IllegalArgumentException("Maps cannot be null");
}

これらすべての null チェックからコードをきれいに保つためだけに。Validator独自のクラスを作成してメソッドをオーバーロードできることはわかってnotNullいますが、車輪を再発明しないために既存の簡単に使用できるものはありますか。

私が使用する唯一の欠点JUnit Assertは、それがスローされ、スローAssertionErrorされないIllegalArgumentExceptionことなどです。

4

2 に答える 2

13

Java 7 以降を使用している場合は、次を使用できます。

Objects.requireNonNull(filePaths, "Map should not be null");

また、引数が null の場合、NullPointerException または IllegalArgumentException が予想されますが、AssertionError は予想されません。

于 2013-07-12T17:28:02.413 に答える
11

いいえ、使用してはいけません。JUnit assert メソッドはAssertionErrorをスローします。プロダクション コードでErrorをスローするのは得策ではありません。javadoc から:

Error は、Throwable のサブクラスであり、適切なアプリケーションがキャッチしようとすべきではない重大な問題を示します。このようなエラーのほとんどは異常な状態です。ThreadDeath エラーは、「通常の」状態ですが、ほとんどのアプリケーションがキャッチしようとしないため、Error のサブクラスでもあります。メソッドの throws 句で、メソッドの実行中にスローされる可能性があるが捕捉されない可能性がある Error のサブクラスを宣言する必要はありません。これらのエラーは決して発生してはならない異常な状態であるためです。つまり、Error とそのサブクラスは、コンパイル時の例外チェックのために未チェックの例外と見なされます。

于 2013-07-12T17:30:29.117 に答える