excepciones y archivos en java

32
Excepciones

Upload: daniel-barco-lopez

Post on 03-Dec-2015

265 views

Category:

Documents


1 download

DESCRIPTION

Excepciones y archivos en java ejemplos y codigo

TRANSCRIPT

Excepciones

Excepciones - Introducción

• En Java, una excepción es la indicación de un problema que ocurre durante la ejecución de un programa.

• Una excepción, como el nombre lo dice, indica que el problema puede o no ocurrir. Si ocurre ésta excepción a la regla, es con poca frecuencia.

Excepciones – Introducción

• El manejo de excepciones permite crear aplicaciones que pueden resolver o manejar las excepciones. De ese modo, el programa puede continuar como si no hubiera habido algún problema.

Excepciones - Introducción

• Los programas evalúan condiciones que determinan cómo debe proceder la ejecución.

• Realizar una tarea– Si la tarea no se ejecutó de manera correcta

» Procesar los errores o dar marcha atrás

• Realizar la siguiente tarea– Si la tarea no se ejecutó de manera correcta

» Procesar los errores o dar marcha atrás

Excepciones - Introducción

• En lenguajes donde no existe el manejo de excepciones, conlleva a crear aplicaciones poco robustas, propensas a fallos, con un mantenimiento lento, etc.

Excepciones - Sintaxis

try{

//Tasks}catch(TipoExcepcion nombre){

//Instrucciones}

Excepciones – Sin manejo

public class Excepciones {public static void main(String args[])

{int numero = 10;int resultado;

resultado = numero / 0;

System.out.println(resultado);

}}

Salida

Exception in thread "main" java.lang.ArithmeticException: / by zeroat mx.uanl.ceti.excepciones.Excepciones.main(Excepciones.java:9)

Excepciones – con manejopublic class Excepciones {

public static void main(String args[]) {int numero = 10;int resultado;

try {resultado = numero / 0;

System.out.println(resultado);}catch(ArithmeticException ae) {

System.out.println("No se puede dividir por cero.");

}

System.out.println("Podemos ejecutar otras operaciones");

//etc etc etc....}

}

Salida

No se puede dividir por cero.Podemos ejecutar otras operaciones

Excepciones – sin manejo

public class Excepciones {public static void main(String args[])

{int numero = 10;int resultado;

resultado = numero * Integer.parseInt("4.5");

System.out.println(resultado);

}

Salida

Exception in thread "main" java.lang.NumberFormatException: For input string: "4.5"at java.lang.NumberFormatException.forInputString(Unknown Source)at java.lang.Integer.parseInt(Unknown Source)at java.lang.Integer.parseInt(Unknown Source)at mx.uanl.ceti.excepciones.Excepciones.main(Excepciones.java:9)

Excepciones – con manejopublic class Excepciones {public static void main(String args[]){

int numero = 10;int resultado;

try{

resultado = numero * Integer.parseInt("4.5");

System.out.println(resultado);

}catch(NumberFormatException e){

System.out.println("No se puede .");}

System.out.println("Podemos ejecutar otras operaciones");

//etc etc etc....

}

Salida

No se puede convertir el string.Podemos ejecutar otras operaciones

Excepcionestry{

//Tasks}catch(TipoExcepcion nombre0){

//Instrucciones}catch(TipoExcepcion nombre1){

//Instrucciones}……catch(TipoExcepcion nombreN){

//Instrucciones}

Particular

A

General

Excepciones - Jerarquía

No debe ser atrapado

Porción de jerarquía de clases dentro de Throwable

Excepciones - finallytry{

//Tasks}catch(TipoExcepcion nombre){

//Instrucciones}finally{

//Siempre se ejecuta}

Excepciones - Lanzartry

{throw new Exception();

}catch(Exception e){ System.out.println("Se forzó una excepción");

}

Excepciones - Personalizar

public class Nombre extends Exception

{Nombre(parametros)

{

super("Texto del error");

}

}

Excepciones - comunes• ClassCircularityError: Se detectó una herencia circular entre clases.• ClassFormatError: Una clase cargada no ha sido incompletamente descrita.• UnsupportedClassVersionError: La versión de una clase no es correcta.• ExceptionInInitializerError: Error al iniciar un miembro static.• IncompatibleClassChangeError: En una clase, su interfaz no es igual al declarado• AbstractMethodError: Se ha invocado un método abstracto.• IllegalAccessError: La aplicación intentó acceder a algún miembro no visible.• InstantiationError: Se intentó instanciar una clase abstracta o interfaz.• NoSuchFieldError: No se encontró determinado atributo.• NoSuchMethodError: No se encontró determinado método.• NoClassDefFoundError: No se encontró una clase cuando se necesitaba.• UnsatisfiedLinkError: Se encontró un enlace insatisfecho en un método nativo.• VerifyError: Se ha producido un error de verificación al cargar una clase.• ThreadDeath: Se ha lanzado en el thread víctima tras llamar a stop().

Excepciones - comunes

• VirtualMachineError: La máquina virtual se ha averiado o quedado sin recursos.

• InternalError: Error interno en tiempo de ejecución.• OutOfMemoryError: El lector ha agotado la memoria.• StackOverflowError: Desbordamiento de pila. ¿Recursión infinita?.• UnknownError: Grave error desconocido.

• CloneNotSupportedException: No se pudo copiar un objeto mediante clone().

• IllegalAccessException: Algún método invocado es no visible.

• InstantiationException: Se ha intentado instanciar una interfaz o una clase abstracta.

• InterruptedException: Cuando se invoca a interrupt() sobre un thread dormido.

• NoSuchFieldException: La clase no tiene un atributo con ese nombre.

• NoSuchMethodException: La clase no tiene un método con ese nombre.

Excepciones - comunes• ArithmeticException: Error de cálculo (como división por cero...).

• ArrayStoreException: Intento de almacenar un objeto equivocado en un vector.

• ClassCastException: Intento de conversión inválida.

• IllegalArgumentException: Se ha pasado un argumento inválido a un método:

• IllegalThreadStateException: Un thread no estaba en el estado adecuado.• NumberFormatException: Una cadena contenedora de un número, no lo contiene.• IllegalMonitorStateException: Se ha usado wait/notify fuera de código sincronizado.

• IllegalStateException: Método invocado en un momento inapropiado.

• IndexOutOfBoundsException: Acceso a un vector fuera de sus límites:

• ArrayIndexOutOfBoundsException: Idem, para una matriz.• StringIndexOutOfBoundsException: Idem, para una cadena.• NegativeArraySizeException: Intento de creación de un vector de tamaño negativo.

• NullPointerException: Se ha usado una referencia null para acceder a un campo.

• SecurityException: Algo ha sido vedado por el sistema de seguridad.

• UnsupportedOperationException: Una operación invocada no se soporta.

Archivos y Flujos

Archivos y flujos - Introducción

• El almacenamiento de elementos en arreglos es temporal; los datos se pierden cuando una variable queda fuera de alcance o cuando el programa termina.

• El procesamiento de archivos mantiene los datos persistentes y es indispensable para el manejo de información.

Archivos y flujos - Jerarquía

• Un campo está compuesto de caracteres y bytes que transmite cierto significado.

• La jerarquía de datos está compuesta por conjuntos de campos que van dando un orden específico a la información.

Archivos y flujos - Jerarquía

• Un conjunto de campos (clase) relacionados es un registro.

• De ese modo, un archivo es un conjunto de registros ordenados.

Archivos y flujos

• Java considera a cada archivo como un flujo de información.

• Dos tipos de flujos: basados en bytes y basados en caracteres.

Archivos y flujos - File

• La clase File recupera información acerca de los archivos.

• No proporciona mecanismos de lectura y/o escritura de archivos, pero es indispensable para el uso de otras clases con estos objetivos.

• Para el manejo de estas clases se hace uso del paquete java.io.

Archivos y flujos - File

Archivos y flujos - File

Archivos y flujos - File

Archivos y flujos - File

• Ejemplo:

File nombre = new File(ruta);

Archivos y flujos

• La lectura y escritura byte a byte hacia el disco es excesivamente lenta, para esto podemos utilizar el buffer.

• Java proporciona clases como BufferedWriter y BufferedReader para solventar esto.

Archivos y flujos

• Pasos para escribir en un archivo– Crear objeto File– Crear objeto FileWriter enviando como parámetro

al constructor el objeto File.– Crear objeto BufferedWriter para almacenar la

información.– Crear objeto PrintWriter para mandar el buffer al

disco.– Cerrar instancias

Archivos y flujos

• Pasos para leer archivos– Crear objeto File– Crear objeto FileReader enviando como parámetro

el objeto File a su constructor.– Crear objeto BufferedReader.– Iterar por las lineas del archivo.– Imprimir lineas del archivo– Cerrar instancias

Archivos y flujos - Ejercicio

• Cree una aplicación en Java que almacene las calificaciones de 5 alumnos. Luego, escriba dicha información en el interior de un archivo de texto y almacénelo en el escritorio de su computadora.

• Considere crear clases y utilizar arreglos para el manejo de la información.