Hola a todos, en esta nueva sección de proceso de conocimiento de java ya podemos no ser tan detenidos en detalles, ya podemos avanzar un poco, teniendo en cuenta que han leído y practicado los ejercicios de Java ( Inicio y aplicaciones ) y de lo que es de Java ( Programación Objetual), entonces ahora empezaremos con algo mas a fondo, que son las Exceptions, el IO en general y las Collections.
EXCEPTIONS
Las Exceptions en java son de bastante importancia, ya que con ellas podemos tratar de hacer cosas, es decir, un ejemplo claro en la vida real, es el de que una persona que puede batear, tiene dos posibilidades, una es de pegarle a la pelota y la otra opción es de no pegarle a la pelota, en este caso, en el de no batear entonces se formaría un catch, que pronto lo veremos. En java las exceptions son objetos, cuando lanzas una expcetion lanzas un objeto.
En resumidas cuentas, uno a java le dice que intente hacer algo, que sino, que entonces haga esto otro, seria algo parecido a una condición if, pero limitada y ya creada en la estructura interna.
Ahora un ejemplo de java, seria, que le entrara escritura, digamos que tenemos un programa que nos lee números, y que estos números los compara y los convierte a un String que representa el valor del numero en letras, entonces en este caso, que pasaría si uno le entrara un numero sino una letra como la "A"... seria un grave error entonces por decirlo así el computador en este proceso, es decir, el programa se volvería loco y se quedaría comparando una letra con un numero. entonces estos errores que tiene o que se pueden cometer son posibles, por lo tanto, controlables.
Existe una ley del programador, y es la de que todo programa puede generar errores, y eso es cierto, no existe el programa que haga todo a la perfección sabiendo las infinitas posibilidades de acceso o algo así.
Veamos todo de una manera mas clara con un ejemplo:
public class Ejerciciodos
{
public static void main ( String [] args)
{
//Para entrada de teclado
InputStreamReader dataIn= new InputStreamReader (System.in);
BufferedReader bfIn= new BufferedReader (dataIn);
try
{
int i = 0;
while ( i <= 10 )
{
//Leemos la escritura
String Linea= bfIn.readLine();
int w= Integer.parseInt(Linea);
if (w!=-1)
{
{
switch(w)
{
//Comparamos con cada una de los posibles reales resultados
case 1: System.out.println( "Uno" ); break;
case 2: System.out.println("Dos" ); break;
case 3: System.out.println("Tres" ); break;
case 4: System.out.println( "Cuatro" ); break;
case 5: System.out.println( "Cinco" ); break;
case 6: System.out.println( "Seis" ); break;
case 7: System.out.println( "Siete" ); break;
case 8: System.out.println("Ocho" ); break;
case 9: System.out.println("Nueve" ); break;
case 10: System.out.println( "Diez" ); default:
System.out.println("Ingresa Un numero del 1 hasta el 10");
}
}
i++;
}
}
}
catch ( IOException mensaje)
{
System.out.println ( "Mensaje de error" + mensaje);
}
}
}
Existe una ley del programador, y es la de que todo programa puede generar errores, y eso es cierto, no existe el programa que haga todo a la perfección sabiendo las infinitas posibilidades de acceso o algo así.
Veamos todo de una manera mas clara con un ejemplo:
- CÓDIGO CLASE: Ejerciciodos
public class Ejerciciodos
{
public static void main ( String [] args)
{
//Para entrada de teclado
InputStreamReader dataIn= new InputStreamReader (System.in);
BufferedReader bfIn= new BufferedReader (dataIn);
try
{
int i = 0;
while ( i <= 10 )
{
//Leemos la escritura
String Linea= bfIn.readLine();
int w= Integer.parseInt(Linea);
if (w!=-1)
{
{
switch(w)
{
//Comparamos con cada una de los posibles reales resultados
case 1: System.out.println( "Uno" ); break;
case 2: System.out.println("Dos" ); break;
case 3: System.out.println("Tres" ); break;
case 4: System.out.println( "Cuatro" ); break;
case 5: System.out.println( "Cinco" ); break;
case 6: System.out.println( "Seis" ); break;
case 7: System.out.println( "Siete" ); break;
case 8: System.out.println("Ocho" ); break;
case 9: System.out.println("Nueve" ); break;
case 10: System.out.println( "Diez" ); default:
System.out.println("Ingresa Un numero del 1 hasta el 10");
}
}
i++;
}
}
}
catch ( IOException mensaje)
{
System.out.println ( "Mensaje de error" + mensaje);
}
}
}
Ahora, esto es lo que les decía, si por ejemplo una persona introduce la palabra A, entonces esto generaría un error, este error lo controlaría con la sentencia de catch, entonces, dentro del try encontramos lo que se podría realizar, es simplemente decirle a java, "Ey!, trata de hacer esto, sino entonces salte por acá en el catch y mostradme este mensaje", esto es algo simple, no es mas algo de practica.
Entonces esta no es la única excepción que puede existir, también podemos crear excepciones como la del siguiente código:
- CÓDIGO CLASE: ConteoVocales
public class ConteoVocales {
public static void main(String []args) throws IOException{
//El fileinput es el archivo a abrir y el fileouput es el archivo a crear o a guardar
FileInputStream conteo=null;
FileOutputStream impresionconteo=null;
try{
//Se abren los escritorios o documentos
conteo= new FileInputStream("DIRECTORIO A BUSCAR ");
impresionconteo= new FileOutputStream("DIRECTORIO A IMPRIMIR");
int vector[]=new int[5];
int a;
while ((a=conteo.read())!=(-1)){
switch ((char) a){
//Se lleva a cada vector cada conteo de cada palabra
case 'a': vector[0]++; break;
case 'e': vector[1]++; break;
case 'i': vector[2]++; break;
case 'o': vector[3]++; break;
case 'u': vector[4]++; break;
default: System.out.println("Es una consonante"); break;
}
}
//convierte el vector a un mensaje completo que se va a imprimir en el documento de impresionconteo
String mensaje= "a :"+ vector[0] + " "+
"e :"+ vector[1] + " "+
"i :"+ vector[2] + " "+
"o :"+ vector[3] + " "+
"u :"+ vector[4];
//Imprimiendo en el docuemtno
for(int i=0;i
impresionconteo.write(mensaje.charAt(i));
}
}
// En caso de que no encuentre el archivo imprime esto:
catch(FileNotFoundException e){
System.out.println("No se encuentra el archivo" +e);
}
//En caso de algun error general
catch(IOException a){
System.out.println("Error al copiar el archivo" +a);
}
finally{
//Cierra los documentos para que no se generen en infinito ni errores.
if(conteo!=null){
conteo.close();
}
if (impresionconteo!=null){
impresionconteo.close();
}
}
}
}
En el anterior código, de conteo de vocales el programa trata de abrir un documento, cuenta las vocales que hay en el documento y luego crea otro documento y en este otro documento imprime el conteo. la sintaxis para abrir documentos e imprimir documentos es casi parecida en todos los programas.Esto lo veremos mas a fondo en el IO
Algunas de las Exceptions para generalizarlas son las siguientes, con su respectivo significado, esto con el fin de que nuestros lectores tengan la idea de a donde van dirigidos y que pueden usar.
Tenga en cuenta, algo bastante IMPORTANTE, en el API de java, que lo podemos ver en la web dando clic aquí
esta web es de bastante importancia, aca podemos ver que clases usan que exceptions y como se pueden invocar y todo el trabajo que puede hacer, los métodos, los constructores y demás.
Algunas exceptions:
- ArithmeticException: Las excepciones aritméticas son típicamente el resultado de una división por 0:
- NullPointerException: Se produce cuando se intenta acceder a una variable o método antes de ser definido.
- IncompatibleClassChangeException: El intento de cambiar una clase afectada por referencias en otros objetos, específicamente cuando esos objetos todavía no han sido recompilados.
- ClassCastException: El intento de convertir un objeto a otra clase que no es válida.
- NegativeArraySizeException: Puede ocurrir si hay un error aritmético al intentar cambiar el tamaño de un array.
- OutOfMemoryException:¡No debería producirse nunca! El intento de crear un objeto con el operador new ha fallado por falta de memoria. Y siempre tendría que haber memoria suficiente porque el garbage collector se encarga de proporcionarla al ir liberando objetos que no se usan y devolviendo memoria al sistema.
- NoClassDefFoundException: Se referenció una clase que el sistema es incapaz de encontrar.
- ArrayIndexOutOfBoundsException:Es la excepción que más frecuentemente se produce. Se genera al intentar acceder a un elemento de un array más allá de los límites definidos inicialmente para ese array.
- UnsatisfiedLinkException: Se hizo el intento de acceder a un método nativo que no existe
- InternalException: Este error se reserva para eventos que no deberían ocurrir. Por definición, el usuario nunca debería ver este error y esta excepción no debería lanzarse.
Este fragmento de listado de excepciones lo he tomado de: http://sunsite.dcc.uchile.cl/java/docs/JavaTut/Cap6/predef.html
Con esto creo que podemos empezar a manejar bastante el tema de excepciones, espero que les haya servido bastante. Si tienen alguna duda dejen comentarios que yo con gusto les responderé.
Con respecto a la bibliografía es casi la misma que se propone en Java - Inicio y aplicaciones.
Con respecto a la bibliografía es casi la misma que se propone en Java - Inicio y aplicaciones.

No hay comentarios:
Publicar un comentario