jueves, 3 de noviembre de 2011

Uso de Exceptions I

// Demostración del mecanismo try-catch-finally para manejar excepciones.
public class UsoExcepciones {

   public static void main( String args[] )
   {
      try {
         lanzarExcepcion(); // llamar al método lanzarExcepcion
      }

      // atrapar excepciones lanzadas por el método lanzarExcepcion
      catch ( Exception excepcion ) {
         System.err.println( "La excepcion se manejo en main" );
      }

      noLanzaExcepcion();
   }

   // demostrar try/catch/finally
   public static void lanzarExcepcion() throws Exception
   {
      // lanzar una excepción y atraparla inmediatamente
      try {
         System.out.println( "El metodo lanzarExcepcion" );
         throw new Exception();  // generar excepción
      }

      // atrapar la excepción lanzada en el bloque try
      catch ( Exception excepcion ) {
         System.err.println(
            "La excepcion se manejo en el metodo lanzarExcepcion" );
         throw excepcion;  // volver a lanzar para procesarla posteriormente

         // cualquier código aquí no llegaría a ejecutarse
      }

      // este bloque se ejecuta, sin importar lo que ocurra en try/catch
      finally {
         System.err.println( "Finalmente se ejecuto en lanzarExcepcion" );
      }

      // cualquier código aquí no llegaría a ejecutarse

   } // fin del método lanzarExcepcion

   // demostrar finally cuando no ocurre excepción
   public static void noLanzaExcepcion()
   {
      // el bloque try no lanza una excepción
      try {
         System.out.println( "El metodo noLanzaExcepcion" );
      }

      // catch no se ejecuta, porque no se lanzó una excepción
      catch( Exception excepcion ) {
         System.err.println( excepcion );
      }

      // la cláusula this se ejecuta, sin importar lo que ocurra en try/catch
      finally {
         System.err.println(
            "Finalmente se ejecuto en noLanzaExcepcion" );
      }

      System.out.println( "Fin del metodo noLanzaExcepcion" );

   } // fin del método noLanzaExcepcion

} // fin de la clase UsoExcepciones