Programación I Para Tecnologías de Información 11 Archivos de Texto Agenda - Gestión de archivos de texto - Introducción a las Excepciones Almacenamiento en memoria Hemos utilizado en nuestras aplicaciones diferentes estructuras para almacenar información. Iniciamos conociendo las variables y constantes, hasta arreglos de datos primitivos y objetos. Pero todas estas estructuras son volátiles, están disponibles en la memoria mientras el programa se encuentre en ejecución. Archivos Planos En muchas ocasiones, requerimos que nuestras aplicaciones almacenen información perdurable (que se mantenga aun después de que la aplicación deje de funcionar). En este caso tenemos varias opciones, una de estas opciones es el manejo de archivos planos que se ubicarán en nuestros discos duros o unidades extraíbles y las cuales la aplicación utilizará cuando así lo requiera. Archivos Planos Los archivos planos son archivos como los que se encuentran en nuestros equipos y con los que trabajamos día a día, pero estos específicamente son archivos cuya información no tiene un formato específico, solo cuentan con caracteres interpretables por el ser humano y que pueden ser gestionados por múltiples aplicaciones. Ejemplo Construiremos un ejercicio que utilice un arreglo para almacenar información en memoria y un archivo plano para mantener esa información posterior a la finalización de nuestro programa. En nuestro ejercicio tendremos un menú de dos opciones, la primera de ellas generará 10 valores entre 1 y 100 y los almacenará en un arreglo, posteriormente los guardará en un archivo plano. La segunda opción leerá el archivo plano y mostrará los valores almacenados. Ejemplo Creamos una instancia de la clase Controlador, en donde se encuentra toda la funcionalidad del arreglo y el archivo Definimos un menú con 2 opciones, en la primera se generan los números y se guardan en el archivo, en la segunda se lee el archivo y se muestran los valores Ejemplo Definimos el arreglo Llenamos el arreglo por medio de un ciclo y generan los números con el método random() de la clase Math Ejemplo Se define el archivo físico y su ruta Se crea la variable que se relaciona con el archivo Se escribe en el archivo cada uno de los valores del arreglo Se debe gestionar por medio de excepciones porque existen funcionalidad que podrían estar fuera de nuestro control Ejemplo Se define el archivo físico y su ruta Se realiza un ciclo WHILE que se repetirá hasta que se alcance el final del archivo, dentro de este se transforma la lectura en un entero y se almacena en el arreglo Se debe gestionar por medio de excepciones porque existen funcionalidad que podrían estar fuera de nuestro control Ejemplo Recorre todo el arreglo y muestra por consola sus valores. Ejemplo Al ejecutar el programa y seleccionar la opción 1, este generará los números y los guardará en el arreglo (para tenerlos en memoria), además los guardará en el archivo de texto, el cual se llamará “misdatos.txt” y se ubicará en la misma ruta del proyecto. Ejemplo Podrá abrir este archivo con cualquier editor de texto. Si ejecuta el programa nuevamente y selecciona la opción 2, este leerá del archivo de texto, colocará la información en el arreglo y posteriormente mostrará por consola la información almacenada. Ejemplo Es importante considerar algunos temas. 1. Si se ejecuta la opción 2 sin seleccionar la opción 1 previamente, el archivo no existirá y el programa presentará un error. 2. Cada vez que se hace una lectura del archivo, se captura una línea del mismo, este resultado siempre será un String aunque el valor que se haya almacenado sea un entero, es por esto que se debe hacer la conversión. 3. Este tema es mucho más amplio, en este documento se ha presentado de manera introductoria, investigue qué funcionalidad podría aplicar a su proyecto con la gestión de archivos. Excepciones En el proceso de desarrollo siempre vamos a encontrarnos con situaciones en las cuales nuestra aplicación no va a funcionar, lo que generalmente llamamos errores de programación. Estos errores pueden presentarse por varias razones. - Errores de sintaxis, palabras reservadas mal escritas o mal utilizadas. Errores de ejecución, programas bien escritos pero que ejecutan acciones incorrectas. Errores de diseño o funcionalidad, cuando nuestro programa no hace lo que se esperaba aunque técnicamente funcione. Excepciones En los errores del sintaxis, normalmente el IDE nos ayuda a resolver estas situaciones y su corrección es sencilla siempre que conozcamos el lenguaje. También nos indica el origen del error y hasta una posible solución Netbeans nos ayuda, señalando la instrucción incorrecta Excepciones En los errores de diseño o funcionalidad, el conocimiento del desarrollador sobre la solución esperada y las pruebas que se realicen serán la mejor manera de identificarlos antes de que generen una pérdida de información, un mal cálculo matemático, etc. Se pretende incrementar el precio en un 13%, pero solamente se hace en un 1.3%. Para el intérprete esto no es un error, para la operación de una empresa, puede ser un error grave Excepciones En los errores de ejecución, existe la posibilidad de que estos errores nosotros los podamos controlar. Si el segundo valor es 0 provocará un error Con un IF podemos condicionar la ejecución de la división Excepciones Pero hay otros posibles errores que son más difíciles de controlar, como problemas de conectividad, entrada de datos, archivos no encontrados o cualquier otro recurso cuya condición no sea la misma al momento en que se programó y que su existencia no dependa del programa. Para estos casos utilizamos el manejo de excepciones que es una técnica de programación que permite gestionar los errores de ejecución, redireccionando el flujo del programa, haciendo un llamado a otros métodos o enviando mensajes, etc. Excepciones En este proceso “tratamos de capturar” los errores en el momento que se presentan y lo gestionamos de manera que condicionamos lo que queremos que suceda en caso de presentarse. Igualmente tenemos la posibilidad de gestionar un bloque de código que se realice cuando se presente o no un error. Excepciones Marca el inicio del bloque TRY Contiene el código gestionado En caso de que falle Siempre se ejecutará Excepciones La instrucción TRY marca el inicio del bloque, todo el código que se encuentre ubicado dentro de este bloque será controlado y en caso de que se presente una excepción, la ejecución se detendrá en ese punto y se iniciará la ejecución del bloque CATCH Excepciones En el bloque CATCH se encontrarán las acciones en caso de que se presente en un error en el bloque TRY, este bloque recibe un parámetro de tipo Exception u otro tipo relacionado, con este parámetro se puede conocer información propia del error presentado. Variable de tipo Exception Método de la clase Exception que retorna el mensaje del error Excepciones En el bloque FINALLY encontraremos el código que requerimos que se ejecute al final sin importar si se presentó un error o no. Este bloque de código es opcional. Excepciones La clase EXCEPTION cuenta con algunos métodos que nos permiten conocer el origen y descripción del error. Esta clase tiene otras más específicas en donde se pueden conocer errores con mayor detalle. Puede utilizar el tipo EXCEPTION o la clase que mejor se ajuste al tipo de excepción, inclusive puede tener varias. Excepciones Se cuenta con varios bloques CATCH, considerando que una vez que se utiliza uno, los otros se ignoran, por lo que se dejan los más generales para el final. Excepciones Las excepciones debemos utilizarlas con mesura, en los lugares en las que las necesitamos y de la manera más conveniente para que nos ayuden a controlar los errores en bloques funcionales muy bien definidos. Desarrolle un ejercicio muy simple en donde se le solicite al usuario dos valores enteros y muestre el resultado de aplicar las cuatro operaciones básicas, analice con su profesor la necesidad de excepciones, forma y ubicación de las mismas. Gracias