6

非常に単純な質問です。プロジェクトで com.google.common.base.Preconditions をよく使用して、引数とパラメーターを検証します。次に例を示します。

Preconditions.checkNotNull(parameter, "message");
Preconditions.checkArgument(parameter > 0, "message");

このコードは、IllegalArgumentException または NPE を生成する可能性があります。しかし、多くの場合、独自の例外をスローする必要があります。このライブラリでどうすればできますか?それとも、別の人にアドバイスできますか?前もって感謝します!

更新: 独自の単純なユーティリティ クラスを作成できることは理解していますが、既製のソリューションを見つけることに興味があります。誰かがそれが可能であることを知っているなら、私に知らせてください。

4

5 に答える 5

7

独自の例外をスローする場合は、 のメソッドと同様のメソッドを使用して独自のクラスを作成するだけPreconditionsです。これらの各メソッドは非常に単純です。例外クラスを指定できるようにする何らかの「プラグイン」機能を追加することは、独自に作成する場合と比べて非常にやり過ぎです。

のソースをPreconditionsいつでも出発点として使用できます。

于 2013-12-20T15:39:19.200 に答える
3

代わりに、valid4j を hamcrest-matchers とともに使用できます (Maven Central で org.valid4j:valid4j として見つかります)。

カスタム例外をスローする入力検証の場合:

import static org.valid4j.Validation.*;

validate(argument, isValid(), otherwiseThrowing(InvalidException.class));

事前条件と事後条件 (つまり、アサーション) の場合:

import static org.valid4j.Assertive.*;

require(argument, notNullValue());
...
ensure(result, isValid());

リンク:

于 2014-12-01T00:08:57.317 に答える
1

例外の種類は、Preconditions クラスにハード コードされています。独自の例外と独自のチェック関数を実装する必要があります。Preconditions の仕組みと同様に、独自の静的クラスでいつでも実行できます。

于 2013-12-20T15:40:26.010 に答える