2. Contenidos tema 3 – Introducción a Java Comenzamos Bases del lenguaje Java Programación Orientada a Objetos (OOP) Clases y objetos Creando clases Paquetes y java classpath Javabeans Herencia Clases abstractas e interfaces Polimorfismo Clases internas Excepciones Logging Networking 2
3. 3 Contenidos de este tema Excepciones Qué es la excepción Qué ocurre tras una excepción Beneficios de la captura de excepciones Práctico Capturando con try/catch Múltiple catch Finally Lanzando excepciones y reglas Jerarquía de excepciones Lanzando excepciones Jerarquía de excepciones Checked y unchecked exceptions Creando tu propia clase de excepción Assertions Sintaxis de assertions Ejemplo
4. 4 Contenidos de este tema Excepciones Qué es la excepción Qué ocurre tras una excepción Beneficios de la captura de excepciones Práctico Capturando con try/catch Múltiple catch Finally Lanzando excepciones y reglas Jerarquía de excepciones Lanzando excepciones Jerarquía de excepciones Checked y unchecked exceptions Creando tu propia clase de excepción Assertions Sintaxis de assertions Ejemplo
5. 5 Qué es una excepción Evento excepcional, normalmente ocurren durante tiempo de ejecución Causa normal del flujo del programa, aspectos no controlados (mala programación? NO) Ejemplos: Dividir por cero Acceder los elementos del array fuera de rango Input inválido Disco duro, error Intentar abrir fichero no existente Falta de memoria
6. 6 Contenidos de este tema Excepciones Qué es la excepción Qué ocurre tras una excepción Beneficios de la captura de excepciones Práctico Capturando con try/catch Múltiple catch Finally Lanzando excepciones y reglas Jerarquía de excepciones Lanzando excepciones Jerarquía de excepciones Checked y unchecked exceptions Creando tu propia clase de excepción Assertions Sintaxis de assertions Ejemplo
7. 7 Qué ocurre tras una excepción Cuando una excepción ocurre dentro de un método, el método crea un objeto Exception y lo lleva a la ejecución del sistema Crear un objeto Exception y enviarla a la ejecución del sistema se llama “lanzar una excepción (throwing an exception)” El objeto de excepción contiene información sobre el error, incluyendo su tipo y el estado del programa cuando el error ocurre
8. 8 Qué ocurre tras una excepción El sistema en ejecución busca en la pila hasta encontrar un método que tenga un capturador de excepciones
9. 9 Qué ocurre tras una excepción Cuando un capturador de excepciones es encontrado, el programa pasa la excepción al capturador Un capturador de excepciones es considerado apropiado si el tipo del objeto Exception coincide con el tipo a ser capturado El capturador es elegido específicamente para capturar la excepción Si la ejecución del sistma busca exhaustivamente todos los métodos en la pila sin encontrar un capturador apropiado, el sistema (y, claro está, el programa) termina y usa el capturador por defecto
10. 10 Contenidos de este tema Excepciones Qué es la excepción Qué ocurre tras una excepción Beneficios de la captura de excepciones Práctico Capturando con try/catch Múltiple catch Finally Lanzando excepciones y reglas Jerarquía de excepciones Lanzando excepciones Jerarquía de excepciones Checked y unchecked exceptions Creando tu propia clase de excepción Assertions Sintaxis de assertions Ejemplo
11. 11 Beneficios de la captura de excepciones Separando la caputura de excepciones del resto del código de la lógica normal: Propagación de errores hacia arriba en la pila Agrupación y diferenciación de tipos de error
12. 12 Contenidos de este tema Excepciones Qué es la excepción Qué ocurre tras una excepción Beneficios de la captura de excepciones Práctico Capturando con try/catch Múltiple catch Finally Lanzando excepciones y reglas Jerarquía de excepciones Lanzando excepciones Jerarquía de excepciones Checked y unchecked exceptions Creando tu propia clase de excepción Assertions Sintaxis de assertions Ejemplo
14. 14 Contenidos de este tema Excepciones Qué es la excepción Qué ocurre tras una excepción Beneficios de la captura de excepciones Práctico Capturando con try/catch Múltiple catch Finally Lanzando excepciones y reglas Jerarquía de excepciones Lanzando excepciones Jerarquía de excepciones Checked y unchecked exceptions Creando tu propia clase de excepción Assertions Sintaxis de assertions Ejemplo
15. 15 Capturando con try/catch Sintaxis: try { <code to be monitored for exceptions> } catch (<ExceptionType1> <ObjName>) { <handler if ExceptionType1 occurs> } ... } catch (<ExceptionTypeN> <ObjName>) { <handler if ExceptionTypeN occurs> }
16. 16 Capturando con try/catch Ejemplo: class DivByZero { public static void main(String args[]) { try { System.out.println(3/0); System.out.println(“Please print me.”); } catch (ArithmeticException exc) { //Division by zero is an ArithmeticException System.out.println(exc); } System.out.println(“After exception.”); } }
17. 17 Contenidos de este tema Excepciones Qué es la excepción Qué ocurre tras una excepción Beneficios de la captura de excepciones Práctico Capturando con try/catch Múltiple catch Finally Lanzando excepciones y reglas Jerarquía de excepciones Lanzando excepciones Jerarquía de excepciones Checked y unchecked exceptions Creando tu propia clase de excepción Assertions Sintaxis de assertions Ejemplo
18. 18 Múltiple catch Ejemplo: class MultipleCatch { public static void main(String args[]) { try { int den = Integer.parseInt(args[0]); System.out.println(3/den); } catch (ArithmeticException exc) { System.out.println(“Divisor was 0.”); } catch (ArrayIndexOutOfBoundsException exc2) { System.out.println(“Missing argument.”); } System.out.println(“After exception.”); } }
19. 19 Contenidos de este tema Excepciones Qué es la excepción Qué ocurre tras una excepción Beneficios de la captura de excepciones Práctico Capturando con try/catch Múltiple catch Finally Lanzando excepciones y reglas Jerarquía de excepciones Lanzando excepciones Jerarquía de excepciones Checked y unchecked exceptions Creando tu propia clase de excepción Assertions Sintaxis de assertions Ejemplo
20. 20 Finally Bloque de código que es ejecutado SIEMPRE, sin importar el escenario presentado: Exit forzado ocurre cuando usamos return, continue o break Finalización normal Excepción lanzada y capturada Excepción fue lanzada y capturada en el método Excepción lanzada y no capturada Excepción lanzada pero no fue especificada en ningún bloque catch en el método
21. 21 Finally Contiene el código para finalizar lo hecho en try/catch ocurra lo que ocurra en éstos Sintaxis: try { <code to be monitored for exceptions> } catch (<ExceptionType1> <ObjName>) { <handler if ExceptionType1 occurs> } ... } finally { <code to be executed before the try block ends> }
22. 22 Contenidos de este tema Excepciones Qué es la excepción Qué ocurre tras una excepción Beneficios de la captura de excepciones Práctico Capturando con try/catch Múltiple catch Finally Lanzando excepciones y reglas Jerarquía de excepciones Lanzando excepciones Jerarquía de excepciones Checked y unchecked exceptions Creando tu propia clase de excepción Assertions Sintaxis de assertions Ejemplo
23. 23 Lanzando excepciones Java te permite lanzar excepciones (generar excepciones) throw <exception object>; Una excepción que lanzas es un objecto Tienes que crear un objecto de excepción en el mismo modo que creas cualquier objeto Ejemplo: throw new ArithmeticException(“testing...”);
25. 25 Lanzando excepciones - reglas Un método es requerido para capturar o listar excepciones susceptibles de ser lanzadas Excepto para Error, RuntimeException o sus subclases Si un método puede causar una excepción pero no la trata, la puede devolver hacia arriba mediante la palabra reservada throws keyword. Sólo aplicable a excepciones checadas Sintaxis: <type> <methodName> (<parameterList>) throws <exceptionList> { <methodBody> }
26. 26 Contenidos de este tema Excepciones Qué es la excepción Qué ocurre tras una excepción Beneficios de la captura de excepciones Práctico Capturando con try/catch Múltiple catch Finally Lanzando excepciones y reglas Jerarquía de excepciones Lanzando excepciones Jerarquía de excepciones Checked y unchecked exceptions Creando tu propia clase de excepción Assertions Sintaxis de assertions Ejemplo
27. 27 Jerarquía de excepciones Throwable class Raíz de las clases de excepciones Subclases inmediatas: Error Usado por java runtime para capturar errores. Generalmente fuera del control del usuario del programa. Ejemplos: Out of memory Hard disk crash Exception Las condiciones con las que el usuario ha de lidiar normalmente. El resultado suele ser alguna notificación de error al usuario en el propio programa Ejemplos: División por cero Array fuera de rango
28. 28 Contenidos de este tema Excepciones Qué es la excepción Qué ocurre tras una excepción Beneficios de la captura de excepciones Práctico Capturando con try/catch Múltiple catch Finally Lanzando excepciones y reglas Jerarquía de excepciones Lanzando excepciones Jerarquía de excepciones Checked y unchecked exceptions Creando tu propia clase de excepción Assertions Sintaxis de assertions Ejemplo
29. 29 Lanzando excepciones Varios catches deben ser ordenados desde las subclases hacia la superclase class MultipleCatchError { public static void main(String args[]){ try { int a = Integer.parseInt(args [0]); int b = Integer.parseInt(args [1]); System.out.println(a/b); } catch (ArrayIndexOutOfBoundsException e) { } catch (Exception ex) { } } }
30. 30 Contenidos de este tema Excepciones Qué es la excepción Qué ocurre tras una excepción Beneficios de la captura de excepciones Práctico Capturando con try/catch Múltiple catch Finally Lanzando excepciones y reglas Jerarquía de excepciones Lanzando excepciones Jerarquía de excepciones Checked y unchecked exceptions Creando tu propia clase de excepción Assertions Sintaxis de assertions Ejemplo
31. 31 Jerarquía de excepciones Throwable class Raíz de las clases de excepciones Subclases inmediatas: Error Usado por java runtime para capturar errores. Generalmente fuera del control del usuario del programa. Ejemplos: Out of memory Hard disk crash Exception Las condiciones con las que el usuario ha de lidiar normalmente. El resultado suele ser alguna notificación de error al usuario en el propio programa Ejemplos: División por cero Array fuera de rango
32. 32 Contenidos de este tema Excepciones Qué es la excepción Qué ocurre tras una excepción Beneficios de la captura de excepciones Práctico Capturando con try/catch Múltiple catch Finally Lanzando excepciones y reglas Jerarquía de excepciones Lanzando excepciones Jerarquía de excepciones Checked y unchecked exceptions Creando tu propia clase de excepción Assertions Sintaxis de assertions Ejemplo
33. 33 Checked and unchecked exceptions Checked exception El compilador java comprueba si el programa cachea o lista las ocurrencias de excepciones Si no se capturan, hay error de compilación Unchecked exception No sujeto a chequeos en tiempo de compilación Error RuntimeException Sus subclases: Capturando todas esas excepciones podemos excedernos de los requerimientos reales del sistema, cuidado!
34. 34 Contenidos de este tema Excepciones Qué es la excepción Qué ocurre tras una excepción Beneficios de la captura de excepciones Práctico Capturando con try/catch Múltiple catch Finally Lanzando excepciones y reglas Jerarquía de excepciones Lanzando excepciones Jerarquía de excepciones Checked y unchecked exceptions Creando tu propia clase de excepción Assertions Sintaxis de assertions Ejemplo
35. 35 Creando tu propia clase de excepción Pasos a seguir: Crear una clase que extienda de RuntimeException o de Exception Personalizar la clase: Miembros y constructores deben ser añadidos a la clase Ejemplo: class HateStringExp extends RuntimeException { /* some code */ }
36. 36 Creando tu propia clase de excepción class TestHateString { public static void main(String args[]) { String input = "invalid input"; try { if (input.equals("invalid input")) { throw new HateStringExp(); } System.out.println("Accept string."); } catch (HateStringExp e) { System.out.println("Hate string!”); } } }
37. 37 Contenidos de este tema Excepciones Qué es la excepción Qué ocurre tras una excepción Beneficios de la captura de excepciones Práctico Capturando con try/catch Múltiple catch Finally Lanzando excepciones y reglas Jerarquía de excepciones Lanzando excepciones Jerarquía de excepciones Checked y unchecked exceptions Creando tu propia clase de excepción Assertions Sintaxis de assertions Ejemplo
38. 38 Assertions Permiten al programador controlar si los objetivos del programa son alcanzados Informa a la persona responsible del código de que una condición particular debe ser siempre satisfecha La ejecución del programa informa de si la aserción es verdadero o falso Si la aserción es NO verdadera, se lanza una excepción AssertionError. El usuario tiene la opción de desactivar o activar la aserción al ejecutar la aplicación
39. 39 Assertions – activación/desactivación Un programa con assertions es posible que no trabaje correctamente si es usado por clientes que no están al tanto de las aserciones usadas en el código Compilando Con capacidad de assertion: javac –source 1.4 MyProgram.java Sin la capacidad de assertion: javac MyProgram.java Activando assertions: Usar el enableassertions o el ea switch java –enableassertions MyProgram
40. 40 Contenidos de este tema Excepciones Qué es la excepción Qué ocurre tras una excepción Beneficios de la captura de excepciones Práctico Capturando con try/catch Múltiple catch Finally Lanzando excepciones y reglas Jerarquía de excepciones Lanzando excepciones Jerarquía de excepciones Checked y unchecked exceptions Creando tu propia clase de excepción Assertions Sintaxis de assertions Ejemplo
41. 41 Sintaxis de assertion Dos formas: Forma simple: assert <expression1>; donde <expression1> is the condition asserted to be true Otra forma: assert <expression1> : <expression2>; donde <expression1> is the condition asserted to be true <expression2> is some information helpful in diagnosing why the statement failed
42. 42 Contenidos de este tema Excepciones Qué es la excepción Qué ocurre tras una excepción Beneficios de la captura de excepciones Práctico Capturando con try/catch Múltiple catch Finally Lanzando excepciones y reglas Jerarquía de excepciones Lanzando excepciones Jerarquía de excepciones Checked y unchecked exceptions Creando tu propia clase de excepción Assertions Sintaxis de assertions Ejemplo
43. 43 Ejemplo class AgeAssert { public static void main(String args[]) { int age = Integer.parseInt(args[0]); assert(age>0); /* if age is valid (i.e., age>0) */ if (age >= 18) { System.out.println(“You're an adult! =)”); } } }
44. Es importante que recordeis… “Si haces todos los días lo mismo no llegarás más lejos de lo que otras veces has llegado” Adelante!!! Jesús Muñoz jesus@iluego.com