AjLearning
AjLearning 0.1    





Introducción a Java - Errores en operaciones enteras

Curso Introducción a Java

    Anterior     Siguiente

El compilador Java nos avisa de los posibles problemas de conversiones y pérdidas de precisión durante la fase de compilación. Pero podemos encontrarnos con problemas en ejecución. El caso típico es la división por cero:

int k = 0; k = 1 / k; En estos casos, que se produce un error en ejecución, el sistema de la máquina virtual genera un objeto, de un tipo especial, que deriva de la clase Exception. Son las llamadas excepciones, que encapsulan en un objeto, la información del problema encontrado.

Discutiremos el concepto de excepción y su tratamiento, más adelante. Pero podemos mencionar que el código de más arriba producirá una excepción en ejecución del tipo
ArithmeticException. Tendremos que aprender a capturar las excepciones: sino, la operación inválida provocará la terminación de toda nuestra aplicación.

Hay otros posibles problemas en ejecución: los truncamientos, y la consecuente pérdida de valores. Si una operación aritmética entera, produce un valor que queda
fuera del rango de valores permitidos por el tipo del resultado, éste se truncará, y se perderán los bits más significativos. Supongamos la operación:
int valor1 = 400000; int valor2 = 200000; int resultado; resultado = valor1 * valor2; El valor de la multiplicación de esos dos enteros será un valor entero que no alcanza para albergar el resultado de multiplicar valor1 por valor2. Tendremos problema, pero no una excepción: sólo obtendremos un resultado erróneo. Y si con los mismo valores, intentamos:
resultado = valor2 * valor1 / valor2; como la multiplicación se ejecuta primero, y ahí ya perdemos valores, el resultado será incorrecto. En cambio, con:
resultado = valor2 * (valor1 / valor2); no ocurrirá el desbordamiento, y el resultado dará 800000.

Programado por Angel J. Lopez www.ajlopez.com