Páginas

La tecnologia en nuestras vidas

La tecnología se encuentra cada día más al servicio del ser humano o el humano al servicio de la tecnología. Ha influido de diferentes formas en el contexto humano y ha provocado un cambio drástico en la misma, ha logrado superar algunos percances que conllevan a la realidad y así mostrar adelantos magníficos a la sociedad en común. La tecnología hoy en día se puede aplicar en todo lo que hacemos, ayudando y facilitando nuestro diario vivir, desarrollando nuevas capacidades y a la vez nuevas tecnologías que sirven para brindar soluciones a las empresas, entidades o beneficiarios de esta.

"Lo importante es no dejar de hacerse preguntas."

lunes, 5 de marzo de 2012

Excepciones en java (bloque try-catch)

Aqui les dejo unos ejemplos de algunas excepciones (a mi parecer las mas comunes) que se pueden dar en java:

NumberFormatException

Esta excepcion se produce cuando se trata de convertir un String a un numero. Las conversiones son realizadas por las funciones Integer.parseInt  e Integer.parseDouble. Supongamos que llamamos la función Integer.parseInt (str), donde el valor de str es "60", entonces convertiríamos ese String a un numero entero , que seria 60. Sin embargo, si el valor de str es "Saurabh", la llamada de la función no se compilará porque "Saurabh" no es una representación de String legal de un valor int. En tal caso, se produce un NumberFormatException. Ejemplo:

import java.util.Scanner;
public class NumberFormatExceptionPrueba {
    public static void main(String args[]){
        Scanner lea= new Scanner (System.in);
        int respuesta=0;
        System.out.println("    Suma de numeros");
        try{
        System.out.print("Numero 1: ");
        String num1=lea.next();
        System.out.print("Numero 2: ");
        String num2=lea.next();
        respuesta=Integer.parseInt(num1)+Integer.parseInt(num2);
        }catch(NumberFormatException e){
            System.out.println("No es posible convertir el valor");
        }
        finally{
            System.out.println(respuesta);
        }
    }
}

ArithmeticException

Se produce cuando una condición aritmética excepcional, se ha producido. Por ejemplo, un número entero dividido entre 0, genera una instancia de esta clase:
import java.util.Scanner;
public class AritmeticExceptionPrueba {
    public static void main (String args[]){
        Scanner lea= new Scanner (System.in);
        double div=0;
        System.out.println("    Division de numeros");
        try{
        System.out.print("Numero 1: ");
        int n1=lea.nextInt();
        System.out.print("Numero 2: ");
        int n2=lea.nextInt();
        div=n1/n2;
        }catch(ArithmeticException e){
            System.out.println("No es posible la division entre 0");
        }finally{
        System.out.println("Resultado de la division: "+div);
        }
    }
}

InputMismatchException

Por ejemplo, se produciría un error si intentáramos introducir caracteres en una variable numérica: 

import java.util.InputMismatchException;
import java.util.Scanner;
public class InputMismatchExceptionPrueba {
    public static void main(String args[]){
        Scanner lea= new Scanner (System.in);
        int respuesta=0;
        System.out.println("    Suma de numeros");
        try{
        System.out.print("Numero 1: ");
        int num1=lea.nextInt();
        System.out.print("Numero 2: ");
        int num2=lea.nextInt();
        respuesta=num1+num2;
        }catch(InputMismatchException e){
            System.out.println("Debe ingresar valores numericos enteros");
        }
        finally{
            System.out.println("Resultado: "+respuesta);
        }
    }
}

ArrayIndexOutOfBounds

Esta excepción es lanzada para indicar que se accedió a un arreglo con un índice que es negativo, mayor que o igual al tamaño de la matriz.

 import java.util.Scanner;
public class ArrayIndexOutOfBoundsExceptionPrueba {
    public static void main(String args[]){
        Scanner lea= new Scanner (System.in);
        String arg[]={"Ana","Juan","Pamela","Carla"};
        int p=0;
        for(int c=0;c<arg.length;c++){
            System.out.println(c+"."+arg[c]);
        }
        try{
            System.out.print("Que nombre desea modificar: ");
            p=lea.nextInt();
            System.out.println("Nombre actual: "+arg[p]);
            System.out.print("Nuevo nombre: ");
            arg[p]=lea.next();
            System.out.print("Nombre modificado, desea verificar la lista (s/n): ");
            char op=lea.next().charAt(0);
            if(op=='s' || op=='S'){
                for(int c=0;c<arg.length;c++){
                    System.out.println(c+"."+arg[c]);
                }
            }
        }catch(ArrayIndexOutOfBoundsException e){
            System.out.println("Posicion invalida...");
        }
    }
}

NullPointerException

Las excepciones de tipo NullPointer son las causas de excepción en tiempo de ejecución más comunes. Son errores de lógica causados cuando un programa intenta acceder a métodos o atributos en una referencia que esta  nula.
Todos los valores en Java, excepto las primitivas, son referencias a objetos y todos tienen un valor por defecto, el valor null, que indica que el objeto no tiene asignado ningún valor. A un objeto con valor null, no inicializado, que no referencia ningún objeto, no se le puede aplicar ningún método, siendo el resultado el lanzamiento de una excepción de tipo NullPointerException.

public class NullPointerExceptionPrueba {
    private Casa casa;
    public static void main(String[] args){
        NullPointerExceptionPrueba vender=new NullPointerExceptionPrueba();
        System.out.println("Venta de casa");
        try{
            System.out.println(vender.casa.getPrecio());
        }catch(NullPointerException e){
            System.out.println("Metodo no valido...");
        }
    }
}

class Casa{
    private int precio;
    public void setPrecio(int precio){
        this.precio=precio;
    }
    public int getPrecio(){
        return precio;
    }
}