Cómo crear excepciones personalizadas en java
Puede crear excepciones personalizadas en Java. Como programador, es probable que tenga una buena comprensión sobre las excepciones, pero en este caso, que va a utilizar la herencia para crear excepciones de su cuenta.
Conteúdo
Rastreando la jerarquía Throwable
Se utiliza la sentencia try / catch para capturar las excepciones y la lanzar declaración a lanzar excepciones. Cada tipo de excepción que puede ser agarrado o lanzado está representado por una clase de excepción diferente. Lo que no se haya dado cuenta es que esas clases de excepción utilizan una cadena de herencia bastante complejo.
Los siguientes párrafos describen las clases en esta jerarquía:
Throwable: La raíz de la jerarquía excepción es el Throwable clase. Esta clase representa un objeto que puede ser lanzado con un lanzar declaración y atrapado con un captura cláusula.
Error: Esta subclase de Throwable representa condiciones de error graves que los programas razonables no pueden recuperarse. Las subclases de esta clase representan los tipos específicos de errores que pueden ocurrir. Si la máquina virtual de Java se ejecuta fuera de la memoria, por ejemplo, un VirtualMachineError se lanza. Usted no tiene que preocuparse por la captura de estos errores en sus programas.
Excepción: Esta subclase de Throwable representa una condición de error que la mayoría de los programas deben tratar de recuperarse. Por lo tanto, Excepción es efectivamente la parte superior de la jerarquía de los tipos de excepciones se captura con try / catch declaraciones.
Con la excepción (perdón) de RuntimeException, las subclases de Excepción representar a determinados tipos de excepciones controladas que deben ser agarrado o lanzado. Tenga en cuenta que algunas de estas subclases tienen subclases de su cuenta. La clase de excepción llamado IOException, por ejemplo, tiene más de 25 subclases que representan diferentes tipos de excepciones de E / S que pueden ocurrir.
RuntimeException: Esta subclase de Excepción representa excepciones sin control. Usted no tiene que coger o lanzar excepciones sin control, pero se puede si usted quiere. Las subclases de RuntimeException incluir Excepción de puntero nulo y ArithmeticException.
Si su aplicación tiene que lanzar una excepción personalizada, puede crear una clase de excepción que hereda cualquiera de las clases en esta jerarquía. Por lo general, sin embargo, se empieza con la Excepción clase para crear una excepción comprobada personalizado.
Creación de una clase de excepción
Para crear una clase de excepción personalizada, que acaba de definir una clase que amplíe una de las clases de la jerarquía de excepción de Java. Por lo general, se amplía Excepción para crear una excepción comprobada personalizado.
Suponga que usted está desarrollando una clase que recupera los datos del producto a partir de un archivo o base de datos, y desea que los métodos que se encuentran con E / S de errores para lanzar una excepción personalizada en lugar del genérico IOException eso está dentro de la API de Java. Puede hacerlo mediante la creación de una clase que amplíe la Excepción clase:
public class ProductDataException extiende Excepción {}
Por desgracia, los constructores no son considerados como miembros de la clase, por lo que no se heredan cuando extiende una clase. Como resultado, la ProductDataException sólo tiene un constructor predeterminado. los Excepción misma clase y la mayoría de las otras clases de excepción tienen un constructor que le pasa un mensaje de cadena que se almacena con la excepción y se puede recuperar a través de la getMessage método.
Así que usted quiere agregar este constructor para la clase, lo que significa que usted desea agregar un constructor por defecto explícita también. Así que ahora la ProductDataException clase tiene este aspecto:
public class ProductDataException extiende Excepción {ProductDataException pública {} ProductDataException público (String mensaje) {super (mensaje) -}}
Aunque es posible hacerlo, agregando campos o métodos a una clase de excepción personalizada es inusual.
Lanzar una excepción personalizada
En cuanto a la excepción, se utiliza un lanzar declaración a lanzar una excepción personalizada. Por lo general, codificar esta lanzar declaración en el medio de una captura cláusula que atrapa alguna otra excepción, más genérico. He aquí un método que recupera los datos de productos de un archivo y lanza una ProductDataException Si una IOException ocurre:
public class ProductDDB {public Producto estática obtenerProducto (código String) lanza ProductDataException {try {p Producto - // código que recibe el producto desde un archivo // y podría lanzar una nueva = Producto IOExceptionp () - retorno p} catch (IOException e) {throw new ProductDataException ("Se ha producido un error IO.") -}}}
Aquí hay algo de código que llama a la obtenerProducto método y captura la excepción:
try {p = Producto ProductDB.getProduct (Código de producto) -} catch (ProductDataException e) {System.out.println (e.getMessage ()) -}
Aquí el mensaje es simplemente visualiza en la consola si una ProductDataException se lanza. En un programa real, desea registrar el error, informar al usuario, y encontrar la manera de continuar con gracia el programa a pesar de que se ha producido esta excepción datos.