Cómo crear excepciones personalizadas en java

Puede crear excepciones personalizadas en Java. Como programador, es probable que tenga una buena comprensión de excepciones, pero aquí, que va a utilizar la herencia para crear excepciones de su propio.

Determinación de la jerarquía de 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á representada por una clase de excepción diferente. Lo que no se haya dado cuenta es que esas clases de excepciones utilizan una cadena de herencia bastante complejo.

Los siguientes párrafos describen las clases de esta jerarquía:

  • throwable: La raíz de la jerarquía de excepciones es la throwable clase. Esta clase representa cualquier objeto que puede ser lanzada con una lanzar declaración y la sorpresa de una captura cláusula.

  • Error: Esta subclase de throwable representa las 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 Java se queda sin memoria, por ejemplo, una VirtualMachineError es aventado. 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 recuperar. Así, Excepción es efectivamente la parte superior de la jerarquía de los tipos de excepciones que a la pelota con trata de atraparlo declaraciones.

    Con la excepción (lo siento) de Excepción en tiempo de ejecución, las subclases de Excepción representar a los tipos específicos de excepciones controladas que deben ser agarrado o lanzado. Tenga en cuenta que algunas de estas subclases tienen subclases de su propia 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.

  • Excepción en tiempo de ejecución: Esta subclase de Excepción representa excepciones sin marcar. Usted no tiene que coger o lanzar excepciones sin marcar, pero puede hacerlo si lo desea. Las subclases de Excepción en tiempo de ejecución incluir Excepción de puntero nulo y ArithmeticException.

    Video: Curso Java Excepciones VI. Creación de excepciones propias. Vídeo 147

Si la aplicación necesita para 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 el Excepción Clase para crear una excepción comprobada personalizado.

La creación de una clase de excepción

Para crear una clase de excepción personalizada, que acaba de definir una clase que se extiende una de las clases en la jerarquía de excepciones de Java. Por lo general, se amplía Excepción para crear una excepción comprobada personalizado.

Supongamos que se 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 enfrentan los errores de E / S para lanzar una excepción personalizada en lugar de la genérica IOException que se proporciona en la API de Java. Puede hacerlo mediante la creación de una clase que amplíe la Excepción clase:

ProductDataException clase pública se 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, el ProductDataException sólo tiene un constructor por defecto. los Excepción clase en sí y la mayoría de las otras clases de excepción tienen un constructor que le permite pasar una cadena de mensaje que se almacena con la excepción y se pueden recuperar a través de la getMessage método.

De este modo se quiere añadir este constructor para la clase, lo que significa que desea añadir un constructor por defecto explícita también. Así que ahora la ProductDataException clase es el siguiente:

ProductDataException clase pública se extiende Excepción {{} ProductDataException pública ProductDataException pública (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 excepción alguna, se utiliza una lanzar declaración a lanzar una excepción personalizada. Por lo general, código Este lanzar declaración en medio de una captura cláusula que atrapa alguna otra excepción, más genérico. Aquí es un método que recupera los datos del producto a partir de un archivo y lanza una ProductDataException Si una IOException ocurre:

Video: Tutorial Java avanzado : Crear una excepción en Java | video2brain

public class ProductDDB {public static Producto obtenerProducto (código de cadena) lanza ProductDataException {try {p Producto - // código que obtiene el producto a partir de un archivo // y podría lanzar un nuevo producto IOExceptionp = () - retorno p} catch (IOException e) {throw new ProductDataException ("Se produjo un error IO.") -}}}

Aquí hay un 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 es aventado. En un programa real, que desea registrar el error, informar al usuario, y encontrar la manera de continuar con el programa de forma normal a pesar de que ha tenido lugar esta excepción datos.

Artículos Relacionados