Excepciones personalizadas en Java

  • 0 Respuestas
  • 5646 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Expermicid

  • *
  • Ex-Staff
  • *****
  • Mensajes: 462
  • Actividad:
    16.67%
  • Reputación 0
  • _-Expermicid-_
  • Skype: expermicid.xd
    • Ver Perfil

Excepciones personalizadas en Java

  • en: Octubre 14, 2013, 02:51:51 pm
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.

Código: Java
  1. import java.util.ArrayList;
  2.  
  3. public class DataBag {
  4.  
  5.    // Variables
  6.    private final int limiteMaximo = 5;
  7.    private ArrayList<Object> lista = new ArrayList<Object>();
  8.    
  9.    // Constructor
  10.    public DataBag() {
  11.       super();
  12.    }
  13.    
  14.    // Getter y Setter
  15.    public int getLimiteMaximo() {
  16.       return limiteMaximo;
  17.    }
  18.    public void setLista(ArrayList<Object> lista) {
  19.       this.lista = lista;
  20.    }
  21.    public ArrayList<Object> getLista() {
  22.       return lista;
  23.    }
  24.    
  25.    // Metodo Add()
  26.    public void add(You are not allowed to view links. Register or Login agregar) {
  27.      
  28.    }
  29.    
  30.    // Metodo Remover()
  31.    public void remover() {
  32.      
  33.    }
  34.    
  35. }

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.

Código: Java
  1. public class FullDataBagException extends You are not allowed to view links. Register or Login {
  2.    
  3.    // Constructor
  4.    public FullDataBagException() {
  5.       super();
  6.    }
  7.    
  8. }

Código: Java
  1. public class EmptyDataBagException extends You are not allowed to view links. Register or Login {
  2.      
  3.    // Constructor
  4.    public EmptyDataBagException() {
  5.       super();
  6.    }
  7.  
  8. }
  9.  

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.

Código: Java
  1. public class FullDataBagException extends You are not allowed to view links. Register or Login {
  2.  
  3.    // Constructor
  4.    public FullDataBagException() {
  5.       super();
  6.    }
  7.  
  8.    // Metodo getMessage
  9.    @Override
  10.    public You are not allowed to view links. Register or Login getMessage() {
  11.         return "La cola no tiene espacion disponible.";
  12.    }
  13.    
  14. }

Código: Java
  1. public class EmptyDataBagException extends You are not allowed to view links. Register or Login {
  2.  
  3.    // Constructor      
  4.    public EmptyDataBagException() {
  5.       super();
  6.    }
  7.  
  8.    // Metodo getMessage
  9.    @Override
  10.    public You are not allowed to view links. Register or Login getMessage() {
  11.         return "La cola no tiene elementos.";
  12.    }
  13.    
  14. }

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.

Código: Java
  1. // Metodo Add()
  2. public void add(You are not allowed to view links. Register or Login agregar) throws FullDataBagException {
  3.    if (this.getLista().size() == this.getLimiteMaximo()) {
  4.       throw new FullDataBagException();
  5.    } else {
  6.       this.getLista().add(agregar);
  7.    }
  8. }

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.

Código: Java
  1. // Metodo Remover()
  2. public void remover() throws EmptyDataBagException {
  3.    if (this.getLista().size() == 0) {
  4.       throw new EmptyDataBagException();
  5.    } else {
  6.       this.getLista().remove(0);
  7.    }
  8. }

Probemoslo.

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



- Si queremos guardar mas elemento del limite permitido.



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

Saludos

 

[Video Curso] Iniciacion a Java por DesarrolloWeb y EscuelaIT Mayo 2014

Iniciado por graphixx

Respuestas: 3
Vistas: 3908
Último mensaje Febrero 23, 2015, 10:13:28 am
por Hu3c0
Java Extremo [Video Cursos Completos] [Español] [ISO] 2009

Iniciado por graphixx

Respuestas: 9
Vistas: 9807
Último mensaje Diciembre 04, 2017, 02:36:34 am
por graphixx
Como compilar programas Java en la consola de comandos de Windows

Iniciado por tar3kw0rm3d

Respuestas: 2
Vistas: 4234
Último mensaje Junio 04, 2013, 02:55:07 pm
por tar3kw0rm3d
Cheat-Sheet: JAVA - Hoja Guía para que no se me olvide

Iniciado por Denisse

Respuestas: 1
Vistas: 615
Último mensaje Julio 21, 2020, 12:43:49 pm
por DevCode
Tutorial: Traduccion de aplicaciones JAVA - Moviles [By :: SmartGenius :: ]

Iniciado por ProcessKill

Respuestas: 0
Vistas: 2519
Último mensaje Febrero 24, 2010, 04:26:07 pm
por ProcessKill