Programación Orientada a Objetos

Anuncio
Programación Orientada a Objetos
Excepciones
La clausula finally
El bloque finally siempre se ejecuta al salir del
bloque try, sin importar que haya salido por qué:
1. Llegó al final del bloque de manera normal
2. Se encontró un break, continue o return
3. Se atrapó una excepción con una de las
clausulas catch anteriores
4. Se presentó una excepción que no fue
atrapada
Cecilia Curlango Rosas
2/17
public class TestFinally {
public static void main(String[] args) {
}
}
try {
int valor = Integer.parseInt(args[0]);
System.out.println(15 / valor);
} catch (ArithmeticException e) {
System.err.println("División entre 0");
e.printStackTrace();
} finally {
System.out.println("Gracias por participar");
}
System.out.println("Adios");
Cecilia Curlango Rosas
3/17
public class TestFinally {
public static void main(String[] args) {
}
}
try {
int valor = Integer.parseInt(args[0]);
System.out.println(15 / valor);
} catch (ArithmeticException e) {
System.err.println("División entre 0");
e.printStackTrace();
} finally {
System.out.println("Gracias por participar");
}
System.out.println("Adios");
Cecilia Curlango Rosas
4/17
public class TestFinally {
public static void main(String[] args) {
}
}
try {
int valor = Integer.parseInt(args[0]);
System.out.println(15 / valor);
} catch (ArithmeticException e) {
System.err.println("División entre 0");
e.printStackTrace();
} finally {
System.out.println("Gracias por participar");
}
System.out.println("Adios");
Cecilia Curlango Rosas
5/17
¿Cómo genero una excepción?
Crear un objeto de tipo excepción como
cualquier otro objeto.
●
Utilizar la instrucción throw para lanzar la
excepción.
●
●
Ejemplo:
throw new ArithmeticException(“prueba”);
Cecilia Curlango Rosas
6/17
public class Main {
public static void main(String[] args) {
}
// pruebas de excepciones
try{
int num = Integer.parseInt(args[0]);
if (num<0){
throw new NumberFormatException("Número negativo");
} else {
System.out.println("Número positivo: " + num);
}
} catch(IndexOutOfBoundsException exc2) {
System.out.println("faltó un argumento");
} catch(NumberFormatException exp) {
System.out.println(exp);
exp.printStackTrace();
} finally {
System.out.println("Gracias");
}
Cecilia Curlango Rosas
7/17
Cecilia Curlango Rosas
8/17
Métodos y excepciones
Los métodos que lanzan excepciones deben
anunciar en el momento en que se declaran,
cuáles excepciones lanzan.
●
Cecilia Curlango Rosas
9/17
Un método lanza una excepción
public class Rectangle {
private int width = 0;
private int height = 0;
private Point origin;
public int getArea() throws NumberFormatException {
if (width == 0 || height == 0) {
throw new NumberFormatException("Medida de lados cero.");
}
return width * height;
}
}
Cecilia Curlango Rosas
10/17
Constructor lanza una excepción
public class Rectangle {
private int width = 0;
private int height = 0;
private Point origin;
public Rectangle() {
origin = new Point(0, 0);
}
public Rectangle(int w, int h) throws NumberFormatException {
}
}
origin = new Point(0, 0);
if (w <= 0 || h <= 0) {
throw new NumberFormatException("Medida de lados negativa.");
}
width = w;
height = h;
Cecilia Curlango Rosas
11/17
public class PruebaRectangulo {
public static void main(String[] args) {
Rectangle noGood;
}
}
try {
noGood = new Rectangle(-4, 5);
} catch (NumberFormatException e) {
System.out.println("Error al crear el rectangulo: "
+ e.getMessage());
e.printStackTrace();
}
Cecilia Curlango Rosas
12/17
Cecilia Curlango Rosas
13/17
Crear Excepciones
Cecilia Curlango Rosas
14/17
Definir la Excepción
Extiende Exception
Cecilia Curlango Rosas
15/17
Alguna Clase Generará la
Excepción
Cecilia Curlango Rosas
16/17
Atrapar la Excepción
Cecilia Curlango Rosas
17/17
Descargar