[ES] Manejo de datos y excepciones

1,164 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,164
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
18
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

[ES] Manejo de datos y excepciones

  1. 1. Lets Rock JavaFundamentos de Java Enterprise Editioncon JDeveloperEudris Cabrera RodriguezIngeniero TelemáticoSenior Software DeveloperSkype:eudriscabreraLinkedIn:http://www.linkedin.com/in/eudriscabreraNoviembre 2011, Santiago de los Caballeros, R. D.
  2. 2. Objetivos1. Introducir el entorno de desarrollo integrado (IDE) Oracle JDeveloper.2. Enseñar fundamentos esenciales para trabajar con tipo de datos y estructuras de control.3. Entender el manejo de excepciones en java.
  3. 3. Agenda ● Introducción del entorno de desarrollo integrado(IDE) Oracle JDeveloper ○ Instalación de JDeveloper ○ Primeros pasos con Jdeveloper. ● Manejo de excepciones ○ Definición, manejo y creación personalizada.. ○ Uso de la Sentencia try/catch/finally/trows.
  4. 4. Introducción a los Entornos de desarrollo integrado(IDE)Instalación de Oracle JDeveloper
  5. 5. Instalación de Oracle JDeveloperAntes de instalar Jdeveloper debemos tener instalado el JDK.Como descargar Oracle JDeveloper desde la página de Oracle1-Visitar el enlacehttp://www.oracle.com/technetwork/developer-tools/jdev/downloads/index.html2- Existen varias opciones, la versión Oracle JDeveloper Studio Edition (StudioEdition: 11.1.2.1.0, que contiene el ADF Runtime y Oracle WebLogic Server11g) y la versión JDeveloper Java Edition(Generic Release Java Edition:11.1.2.1.0, que contiene el core de Java y funcionalidades XML). En nuestrocaso vamos a elegir la segunda opción, ya que queremos ir conocimiento elentorno de desarrollo paso por paso.Pulsar el botón Download File in la opción Generic Release Java Edition:11.1.2.1.0. Esperar que la descarga termine.3- Esta version no necesita un instalador , solamente tenemos que descomprimirel archivo en el directorio deseado.
  6. 6. Instalación de Oracle JDeveloper4- Crear una directorio llamado Oracle en Archivos de programa y descomprimirel archivo jdevjava11121.zip dentro de dicho directorio.La instalación debe quedar como se muestra en la imagen.
  7. 7. Instalación de Oracle JDeveloperLuego navegamos dentro del directorio jdeveloper y seleccionar el archivoejecutable jdeveloper(muestra una tasa de café como ícono).
  8. 8. Instalación de Oracle JDeveloperLuego de seleccionar el archivo jdeveloper, hacemos click derecho encima delmismo. Se mostrarán varias opciones que nos permitiran acceder al archivodesde cualquier lugar, podemos agregarlo al Menú de Inicio o podemos crear unenlace directo. Está a opción nuestra la forma a elegir.
  9. 9. Instalación de Oracle JDeveloperPodemos iniciar a jdeveloper desde el menú de inicio o desde un enlace directo,según su selección anterior. Otra opción es utitlizar uno de los siguientescomandos desde el command prompt.MW_HOMEjdeveloperjdeveloper.exeMW_HOMEjdeveloperjdevbinjdevw.exedonde MW_HOME es el directorio principal donde descomprimimosanteriormente la instalación de jdeveloper.Al iniciar por primera vez, debemos especificar la ruta donde está nuestrainstalación del jdk, ejemplo: C:Program FilesJavajdk1.6.0bin.
  10. 10. Instalación de Oracle JDeveloper
  11. 11. Instalación de Oracle JDeveloperSi seleccionamos la ruta correcta, el programa presenta el splas screen(Primerapantalla que presenta al iniciar el programa). El programa puede preguntarnosque si queremos exportar la configuración de una instalación anterior. Ennuestro caso, pulsamos la opción No.La primera vez que iniciamos el programas se presentará la siguientepantalla.
  12. 12. Instalación de Oracle JDeveloper
  13. 13. Instalación de Oracle JDeveloperPulsamos todas las opciones y luego el botón Ok para continuar. Cerramos laventana de Tip of the Day.Ahora podemos iniciar a usar a jdeveloper.
  14. 14. Instalación de Oracle JDeveloper
  15. 15. Instalación de Oracle JDeveloperLa instalación anterior es sólo para sistemas operativos Windows.Si desea leer más sobre la instalación en otros entornos de desarrollo podemosleer la guía oficial de instalación.http://download.oracle.com/docs/cd/E24382_01/install.1112/e17074/toc.htmPrimeros pasos con JDeveloper
  16. 16. Primeros pasos con Oracle JDeveloper
  17. 17. Manejo de excepcionesA diferencia de otros lenguajes de programación orientadosa objetos como C/C++, Java incorpora en el propio lenguajela gestión de errores.El mejor momento para detectar los errores es durante lacompilación. Sin embargo prácticamente sólo los errores desintaxis son detectados durante este periodo.El resto de problemas surgen durante la ejecución de losprogramas.
  18. 18. Manejo de excepcionesEn el lenguaje Java, una excepción es un cierto tipo de error ouna condición anormal que se ha producido durante laejecución de un programa.Algunas excepciones son fatales y provocan que se debafinalizar la ejecución del programa.En este caso conviene terminar ordenadamente y dar unmensaje explicando el tipo de error que se ha producido.Otras, como por ejemplo no encontrar un fichero en el quehay que leer o escribir algo, pueden ser recuperables.En este caso el programa debe dar al usuario la oportunidadde corregir el error (indicando una nueva localización delfichero no encontrado).
  19. 19. Manejo de excepcionesUn buen programa debe gestionar correctamente todas o lamayor parte de los errores que se pueden producir.En los siguientes apartados se examina cómo y cuándo sedeben lanzar excepciones, cuándo se deben capturar ycómo se crean las clases propias de tipo Exception.
  20. 20. Manejo de excepcionesEXCEPCIONES ESTÁNDAR DE JAVA:
  21. 21. Manejo de excepcionesLos errores se representan mediante dos tipos de clasesderivadas de la clase Throwable: Error y Exception. La figuraanterior muestra parcialmente la jerarquía de clasesrelacionada con Throwable:La clase Error está relacionada con errores de compilación,del sistema o de la JVM. De ordinario estos errores sonirrecuperables y no dependen del programador ni debepreocuparse de capturarlos y tratarlos.
  22. 22. Manejo de excepciones La clase Exception tiene más interés. Dentro de ella se puede distinguir: 1. RuntimeException: Son excepciones muy frecuentes, de ordinario relacionadas con errores de programación. Se pueden llamar excepciones implícitas. 2. Las demás clases derivadas de Exception son excepciones explícitas. Java obliga a tenerlas en cuenta y chequear si se producen.
  23. 23. Manejo de excepcionesEl caso de RuntimeException es un poco especial. El propioJava durante la ejecución de un programa chequea y lanzaautomáticamente las excepciones que derivan deuntimeException.El programador no necesita establecer los bloques try/catchpara controlar este tipo de excepciones.
  24. 24. Manejo de excepcionesRepresentan dos casos de errores de programación: 1. Un error que normalmente no suele ser chequeado porel programador, como por ejemplo recibir una referencia nullen un método. 2. Un error que el programador debería haber chequeadoal escribir el código, como sobrepasar el tamaño asignado deun array (genera un ArrayIndexOutOfBoundsExceptionautomáticamente).En realidad sería posible comprobar estos tipos de errores,pero el código se complicaría excesivamente si se necesitarachequear continuamente todo tipo de errores (que lasreferencias son distintas de null, que todos los argumentos de
  25. 25. Manejo de excepcionesLas clases derivadas de Exception pueden pertenecer adistintos packages de Java.Algunas perenecen a java.lang (Throwable, Exception,RuntimeException, ...);Otras a java.io (EOFException, FileNotFoundException, ...)o a otros packages.
  26. 26. Manejo de excepcionesPor heredar de Throwable todos los tipos de excepcionespueden usar los métodos siguientes: 1. String getMessage() Extrae el mensaje asociado conla excepción. 2. String toString() Devuelve un String que describela excepción. 3. void printStackTrace() Indica el método donde selanzó la excepción.
  27. 27. Manejo de excepcionesLANZAR UNA EXCEPTIONCuando en un método se produce una situación anómala esnecesario lanzar una excepción. El proceso de lanzamientode una excepción es el siguiente:1. Se crea un objeto Exception de la clase adecuada.Se lanza la excepción con la sentencia throw seguida delobjeto Exception creado.// Código que lanza la excepción MyException una vez detectado el errorMyException me = new MyException("MyException message");throw me;
  28. 28. Manejo de excepcionesEsta excepción deberá ser capturada (catch) y gestionada enel propio método o en algún otro lugar del programa (en otrométodo anterior en la pila o stack de llamadas)Al lanzar una excepción el método termina de inmediato, sindevolver ningún valor. Solamente en el caso de que el métodoincluya los bloques try/catch/finally se ejecutará el bloquecatch que la captura o el bloque finally (si existe).Todo método en el que se puede producir uno o más tipos deexcepciones (y que no utiliza directamente los bloquestry/catch/finally para tratarlos) debe declararlas en elencabezamiento de la función por medio de la palabra throws.
  29. 29. Manejo de excepcionesSi un método puede lanzar varias excepciones, se ponendetrás de throws separadas por comas, como por ejemplo:public void leerFichero(String fich) throws EOFException,FileNotFoundException {...}Se puede poner únicamente una superclase de excepcionespara indicar que se pueden lanzar excepciones de cualquierade sus clases derivadas.
  30. 30. Manejo de excepcionesEl caso anterior sería equivalente a:public void leerFichero(String fich) throws IOException {...}Las excepciones pueden ser lanzadas directamente porleerFichero() o por alguno de los métodos llamados porleerFichero(), ya que las clases EOFException yFileNotFoundException derivan de IOException.Se recuerda que no hace falta avisar de que se pueden lanzarobjetos de la clases Error o RuntimeException (excepcionesimplícitas).
  31. 31. Excepciones chequeadas y en tiempo de corridaJava define una clase RuntimeException que es unaextensión de Exception. Algunas subclases deRuntimeException son ArithmeticException,ClassCastException, IndexOutOfBoundsException,NullPointerException.A diferencia de Exception y otras subclases de Exception, elcompilador no requiere que estas se mencionen en unacláusula throws.La razón es que estas excepciones representan errores decódigo que pudieran ocurrir en cualquier método, por lo queprácticamente todos los métodos tendrían que mencionarlas.Ha estas excepciones se les llama excepciones en tiempo de
  32. 32. Excepciones chequeadas y en tiempo de corridaLas excepciones que deben ser mencionadas en la cláusulathrows se les llama excepciones chequeadas porque elcompilador chequea que la cláusula throws coincida concualquier sentencia throw del método o throws de los métodosinvocados.
  33. 33. CAPTURAR UNA EXCEPTIONComo ya se ha visto, ciertos métodos de los packages deJava y algunos métodos creados por cualquier programadorproducen (“lanzan”) excepciones. Si el usuario llama a estosmétodos sin tenerlo en cuenta se produce un error decompilación con un mensaje del tipo: “... Exceptionjava.io.IOException must be caugth or it must be declared inthe throws clause of this method”.
  34. 34. Manejo de excepcionesEl programa no compilará mientras el usuario no haga una deestas dos cosas: 1. Gestionar la excepción con una construcción del tipo try{...} catch {...}. 2. Re-lanzar la excepción hacia un método anterior en elstack, declarando que su método también lanza dichaexcepción, utilizando para ello la construcción throws en elheader del método.El compilador obliga a capturar las llamadas excepcionesexplícitas, pero no protesta si se captura y luego no se hacenada con ella. En general, es conveniente por lo menosimprimir un mensaje indicando qué tipo de excepción se ha
  35. 35. Bloques try y catchEn el caso de las excepciones que no pertenecen a lasRuntimeException y que por lo tanto Java obliga a tenerlas encuenta habrá que utilizar los bloques try, catch y finally.El código dentro del bloque try está “vigilado”: Si se produceuna situación anormal y se lanza por lo tanto una excepciónel control salta o sale del bloque try y pasa al bloque catch,que se hace cargo de la situación y decide lo que hay quehacer. Se pueden incluir tantos bloques catch como seannecesarios, cada uno de los cuales tratará un tipo deexcepción.
  36. 36. Bloques try y catchLas excepciones se pueden capturar individualmente o engrupo, por medio de una superclase de la que deriven todasellas.El bloque finally es opcional. Si se incluye sus sentencias seejecutan siempre, sea cual sea la excepción que se produzcao si no se produce ninguna.El bloque finally se ejecuta aunque en el bloque try haya unreturn.
  37. 37. Relanzar una excepciónExisten algunos casos en los cuales el código de un métodopuede generar una Exception y no se desea incluir en dichométodo la gestión del error. Java permite que este métodopase o relance (throws) la Exception al método desde el queha sido llamado, sin incluir en el método los bucles try/catchcorrespondientes.Esto se consigue mediante la adición de throws más elnombre de la Exception concreta después de la lista deargumentos del método. A su vez el método superior deberáincluir los bloques try/catch o volver a pasar la Exception.
  38. 38. Relanzar una excepciónSegún lo anterior, si un método llama a otros métodos quepueden lanzar excepciones (por ejemplo de un package deJava), tiene 2 posibilidades: 1. Capturar las posibles excepciones y gestionarlas. 2. Desentenderse de las excepciones y remitirlas haciaotro método anterior en el stack para éste se encargue degestionarlas. Si no hace ninguna de las dos cosas anteriores elcompilador da un error, salvo que se trate de unaRuntimeException.
  39. 39. Método finallyEl bloque finally {...} debe ir detrás de todos los bloques catchconsiderados. Si se incluye (ya quees opcional) sus sentencias se ejecutan siempre, sea cual seael tipo de excepción que se produzca, oincluso si no se produce ninguna.El bloque finally se ejecuta incluso si dentro de los bloquestry/catch hay una sentencia continue, break o return.
  40. 40. Método finallyEl bloque finally es necesario en los casos en que se necesiterecuperar o devolver a su situación original algunoselementos. No se trata de liberar la memoria reservada connew ya que de ello se ocupará automáticamente el garbagecollector.Como ejemplo se podría pensar en un bloque try dentro delcual se abre un fichero para lectura y escritura de datos y sedesea cerrar el fichero abierto. El fichero abierto se debe cerrar tanto si produce unaexcepción como si no se produce, ya que dejar un ficheroabierto puede provocar problemas posteriores. Paraconseguir esto se deberá incluir las sentenciascorrespondientes a cerrar el fichero dentro del bloque finally.
  41. 41. CREAR NUEVAS EXCEPCIONESEl programador puede crear sus propias excepciones sólocon heredar de la clase Exception o de una de sus clasesderivadas. Lo lógico es heredar de la clase de la jerarquía deJava que mejor se adapte al tipo de excepción.Las clases Exception suelen tener dos constructores: 1. Un constructor sin argumentos. 2. Un constructor que recibe un String como argumento.En este String se suele definir un mensaje que explica el tipo de excepción generada.Conviene que este constructor llame al constructor de la clasede la que deriva super(String).Al ser clases como cualquier otra se podrían incluir variables ymétodos nuevos.
  42. 42. CREAR NUEVAS EXCEPCIONESPor ejemplo: class MiExcepcion extends Exception { public MiExcepcion() { // Constructor por defecto super(); } public MiExcepción(String s) { // Constructor conmensaje super(s); } }
  43. 43. HERENCIA DE CLASES Y TRATAMIENTO DEEXCEPCIONESSi un método redefine otro método de una super-clase queutiliza throws, el método de la clase derivada no tieneobligatoriamente que poder lanzar todas las mismasexcepciones de la clase base.Es posible en el método de la subclase lanzar las mismasexcepciones o menos, pero no se pueden lanzar másexcepciones. No puede tampoco lanzar nuevas excepcionesni excepciones de una clase más general.
  44. 44. HERENCIA DE CLASES Y TRATAMIENTO DEEXCEPCIONESSe trata de una restricción muy útil ya que comoconsecuencia de ello el código que funciona con la clase basepodrá trabajar automáticamente con referencias de clasesderivadas, incluyendo el tratamiento de excepciones,concepto fundamental en la Programación Orientada aObjetos(polimorfismo).
  45. 45. PREGUNTAS ?WE ROCK JAVA !!!

×