2011-04-16 26 views

Respuesta

4

Si las aserciones están habilitadas en la JVM (mediante el indicador -ea), se lanzará un AssertionError cuando la aserción falle.

Esto no debería estar atrapado, porque si una afirmación falla, básicamente significa que una de sus suposiciones sobre cómo funciona el programa es incorrecta. Por lo tanto, normalmente se entera de una falla de aserción cuando obtiene un seguimiento de pila de excepción registrado con su cadena (y posiblemente todo el programa) que finaliza.

0

Tira un Error. Es como cuando obtienes un NullPointerException, pero es una subclase de java.lang.Error. El nombre es AssertionError.

Es como un NullPointerException en el sentido de que no tiene que declarar los lanzamientos ni nada, simplemente lo arroja.

assert(false); 

es como

throw new AssertionError(); 

si ejecuta su programa con la bandera -ea pasado al programa Java (VM).

1

Si falla una aserción y la afirmación están habilitados en tiempo de ejecución se generará un AssertionError.
Por lo general, usted usa afirmaciones de afirmación en pruebas de JUnit, cuando crea su aplicación está ejecutando una utilidad de prueba que verificará si hay errores y se lo indicará.

Tome un vistazo a esto: Programming With Assertions

+0

JUnit afirma son diferentes a Java afirma ordinaria. Causan que se arroje una excepción diferente ('AssertionFailedError') y no se pueden desactivar con un indicador de JVM. –

+0

Estás mezclando dos cosas.Las aserciones Java tienen la forma 'assert * boolean expression *' o 'assert * boolean expression *: * non-void expression *' y son verificadas por el sistema de tiempo de ejecución cuando están habilitadas. En una prueba JUnit, las sentencias como 'assertEquals (a, b)' son callins de método de clases JUnit. –

4

Una afirmación sólo no si habilitó aseveraciones de la JVM cuando empezó. Puede hacerlo especificando el parámetro -ea en la línea de comando. Si lo hace, entonces este bloque de código generará un AssertionError cuando es ejecutado:

public void whatever() { 
    assert false; 
} 

Las afirmaciones deben ser utilizados para detectar sólo los errores de programación. Si está validando la entrada del usuario o algo así, no use aserciones.

1

Lanza un AssertionError. Sin embargo, debes compilar el programa con la marca -ea o -enableassertions para que genere una excepción real

+3

No es una opción de tiempo de compilación. Es una opción de tiempo de ejecución. –

2

Lanza una AssertionError que es una subclase de Error. Como una Error en general y como una afirmación fallida en particular, es probable que no intente atraparla ya que le indica que hay una anomalía importante en su código y que si continúa probablemente se encuentre en un estado inseguro e indefinido.

0

programador puede escribir tratar bloque catch por lo que si se produce un error, entonces puede ser atrapado en la captura y el programador puede llegar a conocer

try 
{ 
    assert false; 
} 
catch(Exception e) 
{ 
    System.out.println("Error has occured"); 
}