2012-05-16 5 views

Respuesta

6

¿Un poco de google quizás?

"Lo más importante que debe tener en cuenta es que la instrucción if-else se debe usar para el control de flujo del programa y la palabra clave assert solo se debe usar para realizar pruebas. Nunca debe usar aseveraciones para realizar cualquier operación requerida para su aplicación funcione correctamente de acuerdo con la documentación oficial Java de Sun: "Cada afirmación contiene una expresión booleana que se cree que será cierto cuando la afirmación se ejecuta." "

Leer más: http://wiki.answers.com/Q/What_is_the_difference_between_assert_keyword_and_if_keyword_in_java#ixzz1v2GGfAhq

+0

vea el código debajo de – jcy

+0

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

+0

Ponga su código en la etiqueta de código para que pueda verlo mejor. Depende si quieres hacer una prueba. Si no desea separar sus pruebas de su código actual, use una salida if-else. Las afirmaciones son solo para propósitos de prueba ^^ – Depado

3

usted podría, afirman está diseñado específicamente para hacer valer alguna parte del código,

afirman tirará AssertionError si no logra hacer valer


Vea también

2

if-else es para controlar el flujo de su programa. ¡no se debe usar assert para esto! Las afirmaciones son solo por tener "puntos de control" en su código para verificar las condiciones que "siempre" deben coincidir.

Las afirmaciones se pueden activar o desactivar cuando se ejecuta un programa para que pueda habilitar las afirmaciones en su máquina de desarrollo/entorno de integración y desactivarlas en la versión lanzada.

2

la palabra clave afirman solo activará una excepción cuando habilite las aserciones con -ea en el línea de comando. El if/else siempre se ejecutará. Además de eso, la palabra clave assert permite escribir código menos detallado. Compare:

assert parameter != null; 

a:

if(parameter != null) 
{ 

} 
else 
{ 

} 
+0

Claro que la afirmación le permite escribir un código menos detallado, pero aún puede escribir 'if (prm == null) throw new Exception (...);'. Las afirmaciones simplemente no están hechas para ese propósito, están hechas para que cuando se ponga en producción su programa no se hagan pruebas inútiles (porque se supone que sus afirmaciones son siempre válidas). Por lo tanto, se eliminan del paquete de producción. – belka

0

Afirma son ignorados a menos que el parámetro se pasa -ea:

myjar.jar java -ea

esta manera, usted puede usarlos cuando está probando su aplicación, pero ignórelas en otros momentos.

3

que sólo puede pasar por alto la afirmación de

class A{ 

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

Este código imprimirá hi por defecto

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

¿Puedo usar si() {} else salida en lugar de afirmar?

Sí se pudo, pero ...

  • que no sería capaz de convertir de la prueba, a menos que usted hizo la condición dependerá de una bandera extra (que lo hace más complicado, etc.),

  • que no puedes tener la oportunidad de actuar ordenada en marcha en cualquier finally bloque que lo contiene,

  • sería más complicado para registrar la causa del problema que si un AssertionError (o cualquier otra excepción) fue lanzado, y

  • si su código necesario para ser reutilizado (como está) en otra aplicación, las llamadas a exit podría ser problemático.