Está usted en Indice > Construcción > Lenguajes > Java > Lecciones y Paso a Paso > Introducción a los Asertos en Java
Construcción
Maletín
Utilidades
Cursos
Promoción
Rentabilidad
Zona Novatos
Foros
Acceso a tu cuenta

Introducción a los Asertos en Java (2)

Si estos modificadores se escriben tal cual, se activará o desactivará la comprobación de asertos para la clase que se pretende ejecutar. Pero si lo que se quiere es activar/desactivar la comprobación de los asertos en un determinado paquete o de una determinada clase:

java -enableassertions:Saludos.Hola... HolaMundo

(Activa asertos en el paquete Saludos.Hola, por los puntos ...)

java -enableassertions:Saludos.Hola HolaMundo

(Activa asertos la clase Saludos.Hola, por que no lleva puntos)
Y lo mismo para disable:

java -disablessertions:Saludos.Hola... HolaMundo
java -disableassertions:Saludos.Hola HolaMundo

Tambien se puede activar para unos y desactivar para otros:

java -ea:Camion.Rueda... -da:Camion.Freno Camion.Conducir

En resumen la sintáxis es la siguiente:

java [-enableassertions | -ea] [:<package name>"..." | :<class name>]
java [-disableassertions | -da] [:<package name>"..." | :<class name>]
Ejemplos de uso

Bien, vale ya de teoría y pasemos a la práctica. Los asertos prometen mucho, hasta ahora cualquiera que programase en Java y supiese que alguna condición debía ser cierta en alguna parte del código (el invariante) lo colocaba como comentario:

			if (a==1){
			...
			} else if (a==2){
			...
			} else { //cuando a==3
			...
			}

Aqui es donde se puede aplicar la nueva instrucción assert, (y en general para cualquier invariante):

			if (a==1){
			...
			} else if (a==2){
			...
			} else {
			assert (a==3)
			...
			}

De esta manera conseguimos proteger el else. Si se entra por el else y el aserto no se cumple, se genera una excepción de tipo AssertionError.

Otro candidato para los asertos es una sentencia switch que no tenga cláusula default. En este caso el aserto comprobará que nunca se entra por el default, de esta manera:

		switch (suerte){
		 case Moneda.CARA:
		 ...
		 return;
		 case Moneda.CRUZ:
		 ...
		 return;
		 case default:
		 assert false;
		}

Se habrá dado cuenta de la potencia de utilizar assert false en cualquier lugar del programa donde se supone no se debe entrar nunca.

Puede que su programa deba hacer una comprobación férrea de determinados valores de variables, lo que consigue incluyendo asertos que las comprueben alli donde es necesario, pero seguramente tambien querrá comprobar que la comprobación de asertos está activada, pues bien, esta es una manera de que al cargar una clase se asegure que se ejecuta solo si la comprobación de asertos esta activada; coloque este código como primer código a ejecutar de su clase (el sitio ideal es el constructor):

		static {
 		 boolean assertsActivado = false;
        	 assert assertsActivado = true; 
        	 if (!assertsActivado)
            	 throw new RuntimeException("¡Debe activar la comprobacion de asertos!");
    		}


Usuarios que han visto este tema también han visto...

- Centrar una ventana en la pantalla
- Conexiones Base de Datos en Java
- Firma digital de un applet en Java
- Java y XML, JDOM
- Levantar una clase de un JAR dinamicamente


Versión imprimible - Versión imprimible de este documento
Enviar e-mail - Enviar por e-mail este documento
Publicidad

Información legal | Política de Privacidad | Contacte con nosotros

Otro proyecto de Factoría de Internet. Copyright© 2003-2008 Factoría de Internet S.L.. Todos los derechos reservados.


Página generada el 22-11-2008 a las 13:49:14