Está en la página 1de 37

 Promulgar la importancia de la calidad y

robustez del código


 Aplicar mecanismos de respuesta a errores
probables que se susciten en un programa
 Ingresar información desde el teclado y
convertir la misma de acuerdo a los
requerimientos

2
 Consiste en el tratamiento de errores con
java
 Proporciona forma de señalar
acontecimientos inusuales
 Proporciona mecanismo de recuperarse de
un error

3
 En java los errores son conocidos como
excepciones
 Cuando se produce una excepción, se crea
un objeto del mismo tipo de la excepción
 La clase Throwable es la superclase de todas
las clases de manejo de errores

4
5
 Cuando se genera una excepción, el
programa en java busca un manejador para
el error (handler)
 El handler es una porción de código que
identifica el tipo de objeto correspondiente al
error que se ha producido y contiene
sentencias que se van a ejecutar luego de
que ocurrió el error.

6
 Se pueden dar varios tipos de errores:
◦ Al tratar de acceder a elementos de arreglos con
un índice mayor al del último elemento
◦ Divisiones para cero
◦ Manejo de archivos
 No existe, no se tienen suficientes permisos
◦ Errores accediendo a bases de datos
◦ Errores definidos por el usuario
 Tarjeta incorrecta, excede cupo de transferencia, etc.

7
 Algunos casos de situaciones anómalas son:
◦ Invocar a un método sobre un objeto
“null”
◦ Intentar abrir un fichero que no existe para
leerlo
◦ Intentar dividir un número sobre 0

8
 Checked: Son las excepciones que revisa el
compilador
 Unchecked: Son las excepciones que no
revisa el compilador y se dan en tiempo de
ejecución. Ejemplo: RuntimeException

9
10
 String getMessage()
◦ Retorna un mensaje grabado en el objeto de
excepción

 void printStackTrace()
◦ Escribe en línea de texto el error que ha ocurrido,
pero además dice exactamente en qué línea de
código se produce el error

11
12
 Para manejar las excepciones y evitar que un
programa termine por algún error se usa el
bloque: try – catch
 El bloque try encierra la porción de código
donde se pueden producir excepciones
 Las sentencias del bloque try, que se
encuentran después de la sentencia que
causó la excepción no se ejecutarán

13
 El bloque catch contiene el código que se va
a ejecutar una vez que se produce un error
 El bloque catch solo puede tener un
parámetro que representa al tipo de
excepción que el manejador puede
procesar
 Por cada bloque try, hay por lo menos un
bloque catch, de tal forma que se pueden
capturar varios tipos de excepciones

14
 Cuando ocurre una excepcion en una parte del
programa que esta siendo manejada por un bloque try-
catch, se deja de ejecutar el resto de instrucciones del
bloque try y se pasa el control al primer bloque catch

 El programa busca el bloque catch que pueda procesar


el tipo de excepcion que se ha dado.
◦ Se compara el objeto que se creo cuando se produjo el error,
con el tipo de excepcion que recibe como parametro el catch, y
entra al catch cuyo argumento sea del mismo tipo o una
superclase de la excepcion que se produjo

 Cuando se termina de ejecutar el bloque catch, los


demas bloques catch son ignorados y la ejecucion del
programa continua en la primera linea despues del
bloque try-catch

15
 El bloque finally siempre se ejecuta
independientemente de si se da o no una
excepción. Es opcional y se lo usa
generalmente para liberar recursos

16
 No se permite la división entre cero, en la
aritmética con enteros. Java lanza la
excepción ArithmeticException
 Cuando se ingresa un entero no válido se
genera una excepción
NumberFormatException

17
18
19
 La sentencia throw (lanzar) se usa en los
métodos para lanzar una excepción que será
revisada por el compilador
◦ throw new NombreClasedeExcepcion()

 Un método que llama a otro que lanza una


excepción, se debe declarar de la siguiente
forma:
◦ Modificador tipodatoretorno nombreMetodo (..)
throws NombreClasedeExcepcion

20
 El método que lanza una excepción tiene la
declaración habitual que cualquier otro
método pero se le añade a continuación la
palabra reservada throws seguido de la
excepción o excepciones que puede lanzar.

static void rango(int num, int den)throws ExcepcionIntervalo{


if((num>100)||(den<-5)){ throw new
ExcepcionIntervalo("Números fuera del intervalo"); }

21
try{ numerador=Integer.parseInt(str1);
denominador=Integer.parseInt(str2);
rango(numerador, denominador);
cociente=numerador/denominador;
respuesta=String.valueOf(cociente); }

 El método rango es invocado con dos


parametros

22
catch(ExcepcionIntervalo ex){
respuesta=ex.getMessage(); }
System.out.println(respuesta);

 Captura la excepción y genera un mensaje


de error

23
Palabras clave Descripción
Exception Clase de java que contiene información sobre
una excepción o un error
thows Mecanismo para emitir y recoger excepciones
para así poder tratar un problema
try Bloque que puede causar una excepción
catch Bloque que permite recuperarse de una
excepción o capturarla
finally Bloque que será ejecutado siempre, exista o no
una excepción. Asegura que se ejecuten
instrucciones aunque ocurra o no un problema.

24
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader br= new BufferedReader (isr);
try
{
System.out.print("Escriba la calificación como un
entero"+ " ");
calificacion = Integer.parseInt(br.readLine());

}
catch (Exception e)
{
e.printStackTrace();
}

25
 System.in es un objeto de la clase InputStream
 Para java, un InputStream es cualquier cosa de la
que se leen bytes. Puede ser el teclado, un
fichero, un socket, o cualquier otro dispositivo de
entrada
 Si por teclado se ingresa una A mayúscula y con
System.in, se obtendrá un entero de valor 65, que
es el valor del byte correspondiente a la A.
 Que hacer para leer palabras o números del
teclado, no bytes?

26
 una clase Reader es una clase que lee caracteres
 System.in es un InputStream y no un Reader. ¿Cómo
se convierte el System.in en Reader?. Hay una clase
en java InputStreamReader, que hace esta
conversión
 Hay que instanciar un InputStreamReader

 InputStreamReader isr = new InputStreamReader(System.in);

 Se ha creado un objeto de esta clase haciendo new


InputStreamReader(...). Entre paréntesis el parametro
InputStream que se quiere convertir a Reader, en este
caso, el System.in

27
 InputStreamReader lee caracteres sueltos, por
lo que debería indicársele cuantos se leen
 BufferedReader lee todos los caracteres
 BufferedReader br = new BufferedReader (isr);
 El funcionamiento de esta clase es igual que
el InputStreamReader. Al pedir una línea
completa de caracteres (un String), se lo pide
al Reader que tenga dentro, los convierte en
String y lo devuelve.

28
 Para pedirle un String, se usa el método
readLine(). Este método lee todos los
caracteres tecleados (recibidos si fuera otro
dispositivo de entrada) hasta que encuentra
la pulsación de la tecla <INTRO>, <RETURN> .
 String texto = br.readLine();
 lee del teclado un String completo y lo
guarda en una variable "texto".

29
 Al leer un número del teclado, el usuario
escribe por ejemplo 123, con la clase
BufferedReader se obtiene un String que
contiene "123", es decir, tres caracteres.
 Para convertir el String en un número entero
se usa la clase Integer con el método
parseInt
 int valor = Integer.parseInt(texto);

30
 Crear una clase llamada DivisionNumeros.
Esta clase contendrá un método que
aceptará dos Strings y realizará la división
entre éstos. Use el método parseInt() de la
clase Integer para transformar String a int. Si
los Strings no son números válidos se genera
un NumberFormatException, esta excepción
debe ser capturada y un mensaje de error
debe ser mostrado.

31
 Se solicitará ingresar usuario y clave, se
deberá verificar si la clave es mayor de 8
caracteres.

32
 Definir una excepción de usuario
denominada rangoExcepcion que
controlará que cada número entero
ingresado por teclado este en el rango de 1
a 20

 ExcepcionCalificacionApp

33
class ExcepcionIntervalo extends Exception {

public ExcepcionIntervalo (String msg) {


super(msg);

34
try {
..
rango(numerador, denominador)
}
catch (ExcepcionIntervalo ex)
{
respuesta= ex.getMessage();
}

35
static void rango (int num, int den) throws
ExcepcionIntervalo
{
if (num>100)
{
throw new ExcepcionIntervalo ("Numeros
fuera de rango");

}
}

36
 El manejo de excepciones permiten lograr un
mejor nivel de calidad y robustez del software
 Java permite el ingreso de la información a
través de clases y objetos pre-establecidos
 El ingreso de la información requiere de
controles de calidad mediante el manejo de
excepciones

37

También podría gustarte