2012-05-16 2 views

Répondre

6

Un peu de google peut-être? "La principale chose que vous devez garder à l'esprit est que l'instruction if-else doit être utilisée pour le contrôle de flux de programme et que le mot-clé assert ne doit être utilisé qu'à des fins de test. pour votre application fonctionne correctement Selon la documentation officielle Java de Sun:. « Chaque affirmation contient une expression booléenne que vous croyez être vrai lorsque l'affirmation exécute. » "

en savoir plus: http://wiki.answers.com/Q/What_is_the_difference_between_assert_keyword_and_if_keyword_in_java#ixzz1v2GGfAhq

+0

voir le code ci-dessous – jcy

+0

'int * ptr = malloc (sizeof (int) * 10);' 'assert (ptr);' '...' ' – jcy

+0

Mettez votre code dans l'étiquette de code afin que je puisse mieux le voir. Cela dépend si vous voulez faire un test. Si vous ne voulez pas séparer vos tests de votre code actuel, utilisez une sortie if-else. Les assertions sont à des fins de test seulement ^^ – Depado

3

vous pourriez, assert est spécialement conçu pour faire valoir une partie du code,

assert lancera AssertionError si elle ne parvient pas à affirmer


également Voir

2

if-else est pour contrôler le flux de votre programme. affirmer ne doit pas être utilisé pour cela! Les assertions sont juste pour avoir des "points de contrôle" dans votre code pour vérifier les conditions qui "devraient toujours" correspondre.

Les assertions peuvent être activées ou désactivées lors de l'exécution d'un programme afin que vous puissiez activer les assertions sur votre environnement de développement/intégration et les désactiver dans la version finale.

2

le mot-clé assert ne déclenchera une exception que si vous activez les assertions avec -ea sur le ligne de commande. Le if/else sera toujours exécuté. En plus de cela, le mot-clé assert permet d'écrire du code moins bavard. Comparez:

assert parameter != null; 

à:

if(parameter != null) 
{ 

} 
else 
{ 

} 
+0

Bien sûr, l'assert vous permet d'écrire du code moins bavard, mais vous pouvez toujours écrire 'if (prm == null) throw new Exception (...);'. Les affirmations ne sont tout simplement pas faites à cette fin, elles sont faites de sorte que lors de la mise en production de votre programme, aucun test inutile ne soit fait (parce que vos affirmations sont toujours supposées valides). Par conséquent, ils sont supprimés du package de production. – belka

0

Affirme sont ignorées à moins que le param -ea est passé:

java -ea myjar.jar

De cette façon, vous pouvez les utiliser lorsque vous testez votre application, mais ignorez-la à d'autres moments.

3

Je peux simplement ignorer l'affirmation

class A{ 

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

Ce code imprimera salut par défaut

$ java -cp . A 
hi 
$ java -ea -cp . A 
Exception in thread "main" java.lang.AssertionError 
    at A.main(A.java:6) 
1

peut-je utiliser seulement si() {} sortie autre au lieu de assert?

Oui vous pouvez, mais ...

  • vous ne seriez pas en mesure de tourner de l'essai, sauf si vous avez fait la condition dépendre d'un indicateur supplémentaire (ce qui le rend plus compliqué, etc.),

  • vous pas eu la chance d'effectuer bien rangé-en tout enfermant bloc finally,

  • il serait plus compliqué de se connecter la cause du problème que si un AssertionError (ou toute autre exception) a été lancé, et

  • si votre code devait être réutilisé (tel quel) dans une autre application, vos appels à exit pourraient être problématiques.