Soporte de Asserts en Java 1.4.x

0
23169

Asserts en Java

En los lenguajes orientados a objeto, la gestión de los errores se realiza a
través de excepciones.

Existen dos familias de expciones:

  • Lo errores: Problemas graves que se pueden dar y que no merece la pena
    controlar (falta de memoria, error de comunicaciones, etc)
  • Las excepciones en si mismas que son predecibles y que de un modo
    razonable podemos (y debemos controlar).

Java esta en continua evolución y a partir de la versión 1.4 se ha
introducido el concepto de asserts.

Un assert es una condición que se debe dar en un programa para que no se
produczca un error.

La gracia que tiene es que son una mezcla de los dos tipos vistos
anteriormente: Pueden suspender la ejecución de un programa pero no estamos
obligados a controlarlar (declararlas y capturar su posible ejecución).

Además, en tiempo de ejecución podemos definir si queremos evaluarlas o
no….

Vamos a introducirlas en un programa y verificar su uso.

Creamos una clase normal

class misassert
{
     public static void main(String [] main)
     {
          int i = 10;

          assert i> 100;

          System.out.println(«Este es mi ejemplo»);
     }
}

Si compilamos, nos da un error:

Para pocer compilar necesitamos especificar que trabajamos con la versión
1.4

javac -source 1.4 *.java

Ejecución

Si ahora ejecutamos nuestra clase, veremos que no tiene en cuanta el assert

Para que lo considere hay que utilizar un parámetro nuevo: -ea 

 

Mensajes adicionales

Podemos pones un mensaje: 

      assert i> 100  : La variable i esta fuera de
rango
;


C:\java>java -ea misassert
Exception in thread «main» java.lang.AssertionError:
La variable i esta fuera de
rango

at misassert.main(misassert.java:7)

C:\java>

En mensaje es una expresión por lo que podría llamarse a una función… en
nuestro caso podría mostrar los mensajes en función del idioma seleccionado

Si ahora decompilamos el código vamos que el compilador ha echo cosas por
nosotros…. y nuestro código es más pesado

Podemos utilizar en nuestro programa la misma sintaxis directamente::

throw new
AssertionError(mensajeError());

Los asserts son una buena técnica para programas pre y post condiciones….
la programación por contrato….

 Sobre
el Autor ..

Dejar respuesta

Please enter your comment!
Please enter your name here