290 likes | 518 Views
Programación Orientada a Objetos. Temario Excepciones Definición. Funcionalidad Tipos de Excepciones API de las Excepciones Captura de Excepciones (Try – Catch – Finally ) Clase Throwable Lazamiento de Excepciones ( Throw – Throwable ) Excepciones Definidas por el Usuario.
E N D
Programación Orientada a Objetos Temario • Excepciones • Definición. • Funcionalidad • Tipos de Excepciones • API de las Excepciones • Captura de Excepciones (Try – Catch – Finally) • Clase Throwable • Lazamiento de Excepciones (Throw – Throwable) • Excepciones Definidas por el Usuario
Excepciones • ¿Que pasa si tu te diriges a un lado, pero en medio del camino tienes un inconveniente ? • ¿Qué haces si estas trabajando manejando una maquinaria, pero de pronto esta empieza a fallar? • ¿Qué pasa si haces una operación matemática INCALCULABLE? He aquí el uso practico de las ‘Excepciones’
Excepciones Definición: • Real: • Una excepción es predefinir una solución a un posible problema que pueda pasar • Una excepción es una exclusión de la regla. • Programación: • Es un código predefinido que solo se ejecuta siempre y cuando suceda algo especifico (usualmente problemas fuera del flujo de control específicos). • Las excepciones son los métodos que permiten ‘Capturar’ errores en tiempo real, y ejecutar un código ‘opcional’.
Excepciones Uso de excepciones: (Funcionalidad) • Permite capturar problemas fuera de flujo en tiempo real. • Permite evitar posibles problemas de una aplicación, haciendo que la aplicación no termine forzadamente en una ejecución. • Cuando se ejecuta una excepción, esta misma toma el control de la situación, hasta que termina de controlarla y vuelve a donde se origino el problema. • Se puede capturar excepciones tanto muy especificas, como generales. • Es como una medida de “prevención de riesgos”.
Excepciones Tipos de excepciones • Existen varios tipos fundamentales de excepciones: • Error: Excepciones que indican problemas muy graves, que suelen ser no recuperables y no deben casi nunca ser capturadas. • Exception: Excepciones no definitivas, pero que se detectan fuera del tiempo de ejecución. • RuntimeException: Excepciones que se dan durante la ejecución del programa.
Excepciones Tipos de excepciones • De las excepciones fundamentales, cada una tiene sus excepciones derivadas (o especificas). • Alguna de las cuales son: • Error: • OutOfMemoryError: El lector ha agotado la memoria. • InternalError: Error interno en tiempo de ejecución. • UnknownError: Grave error desconocido. • VerifyError: Se ha producido un error de verificación al cargar una clase. • (etc …)
Excepciones Tipos de excepciones • Exception: • IOException: Excepciones relacionados con la entrada/salida de programas • FileNotFoundException: Excepcion cuando no se encuentra un archivo relacionado. • MalFormedURLException: Excepcion que se genera cuando una la ubicación de un archivo/pagina (URL) es incorrecta, o esta mal redactada. • (etc …)
Excepciones Tipos de excepciones • Exception: • RunTimeException: • NullPointerException: Se ha usado una referencia null para acceder a un campo. • ArithmeticException: Error de cálculo (como división por cero...). • ClassCastException: Intento de conversión inválida. • NegativeArraySizeException: Intento de creación de un vector de tamaño negativo. • (etc …)
Excepciones Sintaxis de excepciones: • En JAVA, para manejar uso de excepciones en un bloque de código, se usan los TRY, CATCH y FINALLY. • Try: • try viene del ingles ‘Tratar’, y es donde se encapsula el código donde posiblemente puede llamarse una excepción por ejecuciones fuera del flujo esperado. • Si una cierta cantidad de código esta fuera de un TRY, este código esta libre de que llame una excepción.
Excepciones Sintaxis de excepciones: • Catch: • Catch viene del ingles ‘Captar’, y es el lugar donde se listan las excepciones que se van a ‘tratar’ (try) junto con las ordenes de cada excepción. Las excepciones SIEMPRE se listan de la mas especifica, a las mas general.
Excepciones Sintaxis de excepciones: • Finally: • Finally viene del ingles ‘Finalmente’, y es donde cuando un código fue tratado(try) y captado las excepciones(catch), con FINALLY va hacer una serie de instrucción Independiente si se llama una excepción o no. • Usualmente se usa esta clausula para finalizar conexiones, cerrar archivos, o cierre de aplicaciones.
Excepciones Ejemplo Excepciones: (...) publicstaticvoidmain(String[]args) { // Inicio de la aplicación Servidor s = new Servidor(); Scanner teclado = new Scanner(); s.abrirConexion(); try { int numero1=100; int numero2 = teclado.nextInt(); int resultado = numero1 / numero2; System.out.println("El resultado es: "+resultado); s.guardarResultado(resultado); } Catch(OutOfMemoryError e) { System.out.println("No hay memoria para almacenar"); } catch(IOException e) { e.prinStackTrace(); } Catch(ArithmeticExceptionae) { System.out.println("Error Matematico, no hay RESULTADO"); } Finally { s.cerrarConexion(); } } (...)
Excepciones Ejemplo Excepciones: catch(ArithmeticException e) { System.out.println(“Problemas al poder calcular"); } catch(ClassCastException ex) { System.out.println(“Error al transformar a numero"); }
Excepciones Ejemplo Excepciones: catch(ClassCastException e) { System.out.println("No se puede transformar el valor"); } catch(NullPointerExceptione) { System.out.println("No pueden haber NULOS"); } catch(ArrayIndexOutOfBoundsException ex) { System.out.println("has intentado dar valores FUERA DEL ARREGLO"); }
Excepciones Lazamiento de Excepciones (Throw – Throwable) • Las excepciones pueden lanzarse en cualquier momento con Throw • Throw es controlado por la clase padre de la llamada. • Throw permite agregar nuevas funcionalidades de validaciones • Para controlar una excepcion en el codígo no es necesaria controlarla en el main. • Throw permite utilizar excepciones personalizadas
Excepciones Ejercicio Resuelto • Lanzar un error cuando un numero sea negativo. • Crear un método que reciba como parámetro un número y agregamos la clausula throwsException para que lance la excepción a la clase que la llamo. • Crear en main la recepcion de un numero para la luego llamar el metodo validar todo dentro de un try-catch(Exception p)
Excepciones Ejercicio Resuelto • Crear un método que reciba como parámetro un número y agregamos la clausula throwsException para que lance la excepción a la clase que la llamo. public static void validar (int i) throws Exception { if(i<0) { throw new Exception("El Numeroesnegativo"); } }
Excepciones Ejercicio Resuelto • Crear en main la recepcion de un numero para la luego llamar el metodo validar todo dentro de un try-catch(Exception p) packageexcepcionesthrow; importjavax.swing.JOptionPane; publicclassMain { publicstaticvoidmain(String[] args) { try { int numero = (Integer.parseInt(JOptionPane.showInputDialog("Ingrese un numero"))); validar(numero); } catch(Exception p) { JOptionPane.showMessageDialog(null, p.getMessage()); } } publicstaticvoid validar (int i) throwsException { if(i<0) { throw new Exception("El Numero es negativo"); } } }
Excepciones Ejercicio Resuelto • Conclusiones • Clausula throws dice cual es la clase de tipo Excepcion que será lanzada • Clausula throwenvia la excepción hacia la clase que la llamo • Permite personalizar tus excepciones en tiempo de ejecución Archivo:
Excepciones Ejercicios Propuestos • Crear un método que permita validar si el valor ingresado en un JOptionPane es Numerico. • Crear un método que permita validar si el valor ingresado en un JOptionPane es de tipo Carácteres. • Crear un método que permita validar si valor ingresado esta dentro del rango de 1 a 100
Excepciones API de las Excepciones
Excepciones Clase Throwable • Superclase de todas las clases de excepción. • Dos tipos heredados: • Error. Representa los errores del sistema y de compilación. • No se captura salvo en ocasiones especiales. • Exception. Tipo básico que puede lanzarse desde cualquier método de la biblioteca Java. • Es el utilizado para capturar y crear nuevas excepciones.
Excepciones Clase Throwable • Todas las excepciones tienen como clase base la clase Throwable, que está incluida en el paquete java.lang, y sus métodos son: • Throwable( String mensaje ); Constructor. La cadena es opcional • ThrowablefillInStackTrace(); Llena la pila de traza de ejecución. • StringgetLocalizedMessage(); Crea una descripción local de este objeto. • StringgetMessage(); Devuelve la cadena de error del objeto. • voidprintStackTrace( PrintStream_o_PrintWriter s ); Imprime este objeto y su traza en el flujo del parámetro s, o en la salida estándar (por defecto). • StringtoString(); Devuelve una breve descripción del objeto.
Excepciones Ejercicio Resuelto • Crear una clase a partir de Exception que maneje excepciones de números negativos • Crear clase PersonalizarException que herede de Exception • Crear un constructor que reciba un string • Mandar un mensaje al constructor de Exception con el string del constructor de PersonalizarException • Crear un metodo en el main que arroje el error llamado validar • Crear condición de numero negativo y lanzar throw new con la clase PersonalizarException y el mensaje personalizado. • Crear Flujo del Programa en donde reciba el numero y luego llame al metodo validar todo esto debe estar rodeado de un try-catch(PersonalizarException p)
Excepciones Ejercicio Resuelto • Crear clase PersonalizarException que herede de Exception • Crear un constructor que reciba un string • Mandar un mensaje al constructor de Exception con el string del constructor de PersonalizarException package excepciones; publicclassPersonalizarExceptionextendsException { publicPersonalizarException(String mensaje) { super(mensaje); } }
Excepciones Ejercicio Resuelto • Crear un metodo en el main que arroje el error llamado validar • Crear condición de numero negativo y lanzar throw new con la clase PersonalizarException y el mensaje personalizado. publicclassMain { publicstaticvoidmain(String[] args) { } publicstaticvoid validar (int i) throwsPersonalizarException { if(i<0) { throw new PersonalizarException("El Numero es negativo"); } } }
Excepciones Ejercicio Resuelto package excepciones; importjavax.swing.JOptionPane; publicclassMain { publicstaticvoidmain(String[] args) { try { int numero = (Integer.parseInt(JOptionPane.showInputDialog("Ingrese un numero"))); validar(numero); } catch(PersonalizarException p) { JOptionPane.showMessageDialog(null, p.getMessage()); p.printStackTrace(); } } publicstaticvoid validar (int i) throwsPersonalizarException { if(i<0) { throw new PersonalizarException("El Numero es negativo"); } } }
Excepciones Ejercicio Resuelto Conclusiones • En el momento de ejecutar el método validar se produce un salto en el código por la excepción hacia el catch • Se pueden cambiar los mensajes arrojados del programa por mensajes propios • En el catch se pudo crear una excepción propia PersonalizarException Archivo:
Excepciones Ejercicios Propuestos • Utilizando PersonalizarException controlar mensajes personalizados: • División por Cero • Casting Invalido • Creación de arreglo con indice negativo • Acceso a arreglo fuera de indice