8

assert javaと はどう違いif () {} else exit;ますか?

if () {} else exit代わりに使えassertますか?

4

7 に答える 7

8

グーグルのビット多分?

「覚えておくべき主なことは、if-elseステートメントはプログラムフロー制御に使用し、assertキーワードはテスト目的でのみ使用する必要があるということです。アプリケーションに必要な操作を実際に実行するためにassertを使用しないでください。 Sunの公式Javaドキュメントによると、「各アサーションには、アサーションの実行時に真になると思われるブール式が含まれています。」

続きを読む:http ://wiki.answers.com/Q/What_is_the_difference_between_assert_keyword_and_if_keyword_in_java#ixzz1v2GGfAhq

于 2012-05-16T12:34:41.167 に答える
3

私は主張を無視することができます

class A{

public static void main(String[] args) {
    assert false;
  System.out.println("hi");
}
}

このコードは、デフォルトで hi を出力します

$ java -cp . A
hi
$ java -ea -cp . A
Exception in thread "main" java.lang.AssertionError
    at A.main(A.java:6)
于 2012-05-16T12:37:24.447 に答える
3

if () {} else exit代わりに使えassertますか?

はい、できますが...

  • 条件を追加のフラグに依存させない限り、テストを無効にすることはできません(これにより、より複雑になります)。

  • finally囲んでいるブロックで片付けを実行する機会がありません。

  • AssertionError(またはその他の例外) がスローされた場合よりも、問題の原因をログに記録する方が複雑になります。

  • コードを別のアプリケーションで (そのまま) 再利用する必要がある場合、 への呼び出しにexit問題が生じる可能性があります。

于 2012-05-16T12:56:51.380 に答える
3

assert は、コードの一部をアサートするように特別に設計されています。

AssertionErrorassert は、アサートに失敗した場合にスローします


こちらもご覧ください

于 2012-05-16T12:33:49.837 に答える
2

if-elseは、プログラムのフローを制御するためのものです。これにはassertを使用しないでください。アサートは、コードに「チェックポイント」を設定して、「常に」一致する条件をチェックするためのものです。

プログラムの実行時にアサートをオンまたはオフにして、開発マシン/統合環境でアサートを有効にし、リリースされたバージョンで無効にすることができます。

于 2012-05-16T12:34:40.017 に答える
2

-eaassertキーワードは、コマンドラインででアサーションを有効にした場合にのみ例外をトリガーします。if/elseは常に実行されます。その上、assertキーワードを使用すると、冗長性の低いコードを記述できます。比較:

assert parameter != null;

に:

if( parameter != null )
{

}
else
{

}
于 2012-05-16T12:34:45.873 に答える
1

-eaパラメータが渡されない限り、アサートは無視されます。

java -ea myjar.jar

そうすれば、アプリケーションをテストするときにそれらを使用できますが、それ以外のときは無視してください。

于 2012-05-16T12:35:42.590 に答える