/* Lab20.java (c) 2007 adolfo@di-mare.com */ /** @(#)Lab20.java 2007 Manejo de Excepciones. @author Adolfo Di Mare */ import java.io.*; // Clases para leer desde el teclado /** Clase que contiene el programa principal {@code main()}. */ public class Lab20 { /** Programa principal. * OJO: NO tira la excepción IOException porque * siempre se usa try {} catch() {} con {@code CIN}. */ public static void main( String args[] ) { if (false) { try_IOException(); } try_ArithmeticException(); try_Todas(); } public static void try_ArithmeticException( ) { try { long CERO = 0; if ( 12/CERO == CERO ) { System.out.println( "Nunca se ejecuta" ); } } catch (ArithmeticException ex) { String str = "Error de lectura..."; System.out.println( "Menso: División por cero" ); System.out.println( "ex.getMessage() == [" + ex.getMessage() + ']' ); System.out.println( "ex.toString() == [" + ex.toString() + ']' ); } System.out.println(); } public static void try_IOException( ) { String str; // hilera leída del teclado BufferedReader CIN = new BufferedReader( new InputStreamReader(System.in) ); try { str = CIN.readLine(); // lee todo el reglón } catch (IOException ex) { str = "Error de lectura..."; System.out.println( str ); } System.out.print( "Valor leído: " + str ); try { CIN.close(); // Cierra la consola de lectura } catch ( Throwable ex ) { // no hace nada... ¿queda abierto? } System.out.println(); return; } public static void try_Todas( ) { try { long CERO = 0; CERO = 12/CERO; System.out.println( "Nunca se ejecuta" ); } catch ( Throwable ex ) { Class exClass = ex.getClass(); String exName = exClass.getName(); System.out.println( "[ArithmeticException]\nTipo de excepción: " + exName ); } System.out.println(); try { long VEC[] = { 0 , 1 , 2 }; for ( int i=0; i <= VEC.length; ++i ) { if ( i != VEC[i] ) { System.out.println( "Revienta con i==3" ); } } System.out.println( "Nunca se ejecuta" ); } catch ( Throwable ex ) { String exName = ex.getClass().getName(); System.out.println( "[ArrayIndexOutOfBoundsException]\nTipo de excepción: " + exName ); } System.out.println(); try { String str = "ñacañacañaca"; long l = Long.parseLong( str ); System.out.println( "Nunca se ejecuta" ); } catch ( Throwable ex ) { Class exClass = ex.getClass(); String exName = exClass.getName(); System.out.println( "[NumberFormatException]\nTipo de excepción: " + exName ); } System.out.println(); try { String str = "ñacañacañaca"; throw( new org.omg.CORBA.Bounds("congaCONGA") ); } catch ( Throwable ex ) { Class exClass = ex.getClass(); String exName = exClass.getName(); System.out.println( "[org.omg.CORBA.Bounds]\nTipo de excepción: " + exName ); } System.out.println(); } /** Constructor por defecto. * {@code private} previene que la clase sea instanciada. */ private Lab20() { super(); } } // Lab20 /* EOF: Lab20.java */