Jump to content
YOUR-AD-HERE
HOSTING
TOOLS
SERVICE

Locked Excepciones personalizadas en Java


Expermicid

Recommended Posts

Java usa excepciones para proveer manejo de errores a sus programas.

Se pueden definir excepciones propias en Java, no hay por qué limitarse a las predefinidas, bastará con que la clase extienda de la clase Exception y proporcionar la funcionalidad para el tratamiento de esa excepción.

 

Supongamos que tenemos que crear una clase DataBag, la cual tiene un numero máximo de elementos y permite almacenar cualquier tipo de objetos.

Y debemos definir dos métodos:

- add() para permitir agregar elementos a la bolsa y en el caso de que la misma este llena dispare la excepción FullDataBagException.

- remove() para remover elementos de la bolsa y en el caso de que la misma este vacía se dispare la excepción EmptyDataBagException

 

Las dos excepciones FullDataBagException y EmptyDataBagException son excepciones chequeadas que deben ser creadas por nosotros como subclase de Exception.

 

Para ello creamos la Clase DataBag.

 

[LENGUAJE=java]import java.util.ArrayList;

 

public class DataBag {

 

// Variables

private final int limiteMaximo = 5;

private ArrayList lista = new ArrayList();

 

// Constructor

public DataBag() {

super();

}

 

// Getter y Setter

public int getLimiteMaximo() {

return limiteMaximo;

}

public void setLista(ArrayList lista) {

this.lista = lista;

}

public ArrayList getLista() {

return lista;

}

 

// Metodo Add()

public void add(Object agregar) {

 

}

 

// Metodo Remover()

public void remover() {

 

}

 

}[/LENGUAJE]

 

Ya tenemos el esqueleto de la clase. En donde ponemos el limite de objetos que se pueden guardar y usamos un ArrayList para almacenar los objetos.

Los metodos Add() y Remover() los haremos despues.

Vamos a crear las excepciones, para ello creamos una clase llama FullDataBagException que extienda a Exception y lo mismo con EmptyDataBagException.

 

[LENGUAJE=java]public class FullDataBagException extends Exception {

 

// Constructor

public FullDataBagException() {

super();

}

 

}[/LENGUAJE]

 

[LENGUAJE=java]public class EmptyDataBagException extends Exception {

 

// Constructor

public EmptyDataBagException() {

super();

}

 

}

[/LENGUAJE]

 

En ellas vamos a sobreescribir el metodo getMessage para imprimir un mensaje adecuada a cada caso.

En el caso de FullDataBagException tiene que notificarse que no hay mas espacio y en EmptyDataBagException que no hay elementos.

Nos quedaria asi.

 

[LENGUAJE=java]public class FullDataBagException extends Exception {

 

// Constructor

public FullDataBagException() {

super();

}

 

// Metodo getMessage

@Override

public String getMessage() {

return "La cola no tiene espacion disponible.";

}

 

}[/LENGUAJE]

 

[LENGUAJE=java]public class EmptyDataBagException extends Exception {

 

// Constructor

public EmptyDataBagException() {

super();

}

 

// Metodo getMessage

@Override

public String getMessage() {

return "La cola no tiene elementos.";

}

 

}[/LENGUAJE]

 

Ahora si haremos los metodos de la clase DataBag.

 

En el metodo Add():

 

- Primero que nada se usa la clausula throws para declarar el tipo de excepción que lanza.

- Con un if verificamos si hay espacio para guardar el nuevo objeto. Si la hay se guarda, en caso contrario se genera una nueva excepcion FullDataBagException y se lanza con throw.

 

[LENGUAJE=java]// Metodo Add()

public void add(Object agregar) throws FullDataBagException {

if (this.getLista().size() == this.getLimiteMaximo()) {

throw new FullDataBagException();

} else {

this.getLista().add(agregar);

}

}[/LENGUAJE]

 

Y con el metodo Remover():

 

- Se usa la clausula throws para declarar el tipo de excepción que lanza.

- Con un if verificamos si hay objetos para eliminar. Si la hay se elimina el que esta en la posicion 0, en caso contrario se genera una nueva excepcion EmptyDataBagException y se lanza con throw.

 

[LENGUAJE=java]// Metodo Remover()

public void remover() throws EmptyDataBagException {

if (this.getLista().size() == 0) {

throw new EmptyDataBagException();

} else {

this.getLista().remove(0);

}

}[/LENGUAJE]

 

Probemoslo.

 

- En el caso de que queramos eliminar un elemento y no la haya.

 

This is the hidden content, please

 

- Si queremos guardar mas elemento del limite permitido.

 

This is the hidden content, please

 

Funcionan, luego podemos usar try...catch para capturarlas.

 

Saludos

Edited by Expermicid
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.