Assert

java

Aserciones (assert)

Las aserciones son introducidas en la versión 1.4 de Java, y sirven para establecer cómo se comportará el flujo de la información (etapa de prueba). No es para detectar errores en la entrada de datos.

Para colocar una aserción se utiliza la palabra clave assert; esto es,

assert expresión1 [: expresión2];

Donde,

Expresión1: define la aserción que se desea controlar

Expresión2: Es opcional, sirve para que en caso de no cumplirse la expresión1, pasarle un valor concreto al error que se produce. Este valor puede ser el valor de una variable o un String.

 

Ejemplo:

class Aser {
 public static void main(String[]arg) {
   int a=10;
   assert a>=0 &&a<=5 : metodo();
   System.out.println("todo bien");
 }
 static String metodo() {
   return "Se sale del rango especificado";
 } 
}

Java lo que hace es no chequear las aserciones salvo que le indiquemos explícitamente que queremos que lo haga:

java -ea miPrograma //activa las aserciones de mi programa

java -da miPrograma //las desactiva

java -ea:class miPrograma //activa las aserciones de mi programa; pero sólo en la clase class

java -da:class miPrograma //desactiva las aserciones de la clase class

java -ea:package… miPrograma //activa las aserciones de mi programa; pero sólo en el paquete package

java -da:package… miPrograma //desactiva las aserciones del paquete package

Criterios

Son las aserciones un arma poderosa para detectar errores antes de perder el control del programa; pero hay que usarla con prudencia y sabiduría.

  • NO se deben usar a la entrada de métodos públicos
  • NO se deben usar para detectar errores en los datos de entrada al programa
  • SI se deben usar a la entrada de métodos privados
  • SI se deben usar a la salida de métodos públicos o privados
  • SI se deben usar para chequear cómo suponemos que están las variables y estructuras de datos internas
  • SI se deben usar en la clausula else de construcciones switch cuando todos los casos correctos están explícitos (es decir, cuando la rama else no debería tomarse jamás)
  • SI se deben usar en el último else de cadenas if … else if … switch cuando todos los casos correctos están explicitados (es decir, cuando el último else no debería tomarse jamás)
  • SI se deben usarse en bucles largos (siguiendo el concepto de invariantes de bucle)

Fuente: Documento hecho por Sonia Arriagada

byangerrising

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: