Menú Curso Java Básico : Definición y uso de una Clase para Errores ("Exceptions").

(Anterior) Operadores, Errores y Datos de Entrada/"Streams".
En base a su ambiente, abra un Editor de Textos para generar el siguiente ejemplo.

Código Fuente DefinirErrores.java

 
class MiError extends Exception {
       public MiError() {}
       public MiError(String msg) {
         super(msg);
       }
}

public class DefinirErrores {
    public static void f() throws MiError {
	System.out.println("Generando Error explícitamente en f()");
	throw new MiError("Originado en f()"); 
    }

    public static void g() throws MiError {
	System.out.println("Generando Error explícitamente g()");
	throw new MiError("Originado en g()");
    }
    
    public static void main(String[] args) {
	try {
	    f();
	} catch(MiError e) {
	    e.printStackTrace(System.err);
	}

	try {
	    g();
	} catch(MiError e) {
	    e.printStackTrace(System.err);
	}

    }
} 

En el archivo fuente anterior son diseñadas dos Clases : MiError que define un error ("Exception") propietario y DefinirErrores que hace uso de esta Clase.

Clase MiError

  • Esta clase hereda ("Inherit") el comportamiento de Exception, esto permite utilizar funcionalidades ya definidas en esta Clase. NOTA: Aunque la clase base de todo error ("Exception") es java.lang.Throwable, generalmente se opta por java.lang.Exception ya que posee mayores funcionalidades(métodos); inclusive si observa la documentación del JDK, notará que la Clase java.lang.Exception hereda ("inherit") el comportamiento de la Clase java.lang.Throwable, en efecto teniendo acceso a cualquiera de los métodos/campos disponibles en la Clase Base.

  • Son definidos dos constructores para esta Clase:

    • Uno de estos recibe un String como valor de entrada y a su vez manda llamar la Clase Base (Exception) a través del vocablo super.

    • Otro es el constructor sin argumentos que debe ser declarado al emplearse más de un constructor.

Clase DefinirErrores

  • Esta Clase define dos métodos llamados f() y g(), una característica especifica de estos métodos es que utilizan el vocablo throws seguido de una Clase, esta sintaxis es obligatoria para los métodos que puedan generar errores, debe hacerse fuerte énfasis que esto es independiente de las declaraciones hechas en los bloques try/catch, es simplemente una sintaxis para los métodos capaces de generar errores.

  • Dentro de cada método f() y g() es generado un error con la clase MiError explícitamente.

  • En el método principal (main) son definidos dos bloques try/catch, en uno de estos es llamado el método f() y en otro el método g().

  • Al ser llamada la función de cada bloque, se genera un error del tipo MiError puesto que cada función invoca explícitamente este error.

  • Cuando se detecta (atrapa) el error se entra en la sección catch donde es invocada la función printStackTrace vía la referencia e.NOTA: El método printStackTrace fue heredado ("Inherited") de la clase Exception.

  • La Clase/método System.err representa el "Stream" de salida para cualquier error generado en un programa Java.

Terminos Legales de Contenido ©2000-2008 Osmosis Latina

Diseñado bajo estándares : XHTML   CSS  

webmaster@osmosislatina.com