Ir a contenido principal

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

La primera vez que inicie sesión en developerWorks, se creará un perfil para usted. Cierta información de su perfil de developerWorks será mostrada públicamente, pero usted puede editar la información en cualquier momento. Su nombre, apellido (a menos que usted elija ocultarlo) y nombre de usuario acompañarán el contenido que usted publique.

Toda la información enviada es segura.

  • Cerrar [x]

La primera vez que inicia sesión en developerWorks se crea un perfil para usted, teniendo que elegir un nombre para mostrar en el mismo. Este nombre acompañará el contenido que usted publique en developerWorks.

Por favor elija un nombre de 3 - 31 caracteres. Su nombre de usuario debe ser único en la comunidad developerWorks y debe ser distinto a su dirección de email por motivos de privacidad.

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

Toda la información enviada es segura.

  • Cerrar [x]

Introducción a la programación Java, parte 2: Construcciones para aplicaciones del mundo real

Funciones más avanzadas del lenguaje Java

J. Steven Perry, Consultor Director, Makoto Consulting Group, Inc.
J. Steven Perry
J. Steven Perry es desarrollador de software, arquitecto y fanático general de Java que ha estado desarrollando software profesionalmente desde 1991. Sus intereses profesionales abarcan desde el funcionamiento interno de la JVM hasta el modelo UML y todo lo que está en el medio. Steve tiene una pasión por escribir y ser mentor. Es el autor de Java Management Extensions (O'Reilly), Log4j (O'Reilly) y los artículos de developerWorks de IBM "Joda-Time" y OpenID for Java Web applications". Pasa tiempo libre con sus tres hijos, anda en bicicleta y enseña yoga.

Resumen:  En la Parte 1 de este tutorial, el programador Java™ profesional J. Steven Perry presentó la sintaxis del lenguaje Java y las bibliotecas que usted necesita para escribir aplicaciones Java simples. La Parte 2, todavía orientada a desarrolladores nuevos en el desarrollo de aplicaciones Java, presenta las construcciones de programación más sofisticadas requeridas para crear complejas aplicaciones Java del mundo real. Los temas que se cubren incluyen manejo de excepciones, herencia y abstracción, expresiones regulares, genéricos, E/S Java y serialización Java.

Ver más contenido de esta serie

Fecha:  10-12-2012
Nivel:  Introductoria PDF:  A4 and Letter (927 KB | 54 páginas)Get Adobe® Reader®

Comentario:  

Excepciones

Ningún programa funciona nunca el 100 por ciento del tiempo y los diseñadores del lenguaje Java sabían esto. En esta sección, aprenda acerca del mecanismo incorporado de la plataforma Java para manejar situaciones donde su código no funcione exactamente como se planeó.

Conceptos básicos del manejo de excepciones

Una excepción es un evento que ocurre durante la ejecución de un programa y que interrumpe el flujo normal de las instrucciones del programa. El manejo de excepciones es una técnica esencial de la programación Java. En esencia, usted corta su código en un bloque try (que significa "intenta esto y avísame si causa una excepción") y lo usa para catch diversos tipos de excepciones.

Para comenzar con el manejo de excepciones, observe el código en el Listado 10:


Listado 10. ¿Ve el error?

// . . .
public class Employee extends Person {
// . . .
 private static Logger logger;// = Logger.getLogger(Employee.class.getName());

 public static void main(String[] args) {
   Employee employee1 = new Employee();
   employee1.setName("J Smith");
   Employee employee2 = new Employee();
   employee2.setName("J Smith");
   logger.info("Q: employee1 == employee2?      A: " + (employee1 == employee2));
   logger.info("Q: employee1.equals(employee2)? A: " + employee1.equals(employee2));

 }

Observe que se ha comentado el inicializador para la variable estática que tiene la referencia de Logger. Ejecute este código y obtendrá la siguiente salida:

Excepción en el subproceso "main" java.lang.NullPointerException
 at com.makotogroup.intro.Employee.main(Employee.java:54)

Esta salida le está diciendo que usted está intentando hacer referencia a un objeto que está allí, lo cual es un error de desarrollo bastante serio. Afortunadamente, puede usar los bloques try y catch para obtenerlo (junto con un poco de ayuda de finally).

try, catch y finally

El Listado 11 muestra el código con error del Listado 10 limpio con los bloques de códigos estándar para el manejo de excepciones try, catch y finally:


Listado 11. Obtener una excepción

// . . .
public class Employee extends Person {
// . . .
 private static Logger logger;// = Logger.getLogger(Employee.class.getName());

 public static void main(String[] args) {
   try {
     Employee employee1 = new Employee();
     employee1.setName("J Smith");
     Employee employee2 = new Employee();
     employee2.setName("J Smith");
     logger.info("Q: employee1 == employee2?      A: " + (employee1 == employee2));
     logger.info("Q: employee1.equals(employee2)? A: " + employee1.equals(employee2));
   } catch (NullPointerException npe) {
     // Handle...
     System.out.println("Yuck! Outputting a message with System.out.println() " +
                        "because the developer did something dumb!");
   } finally {
     // Always executes
   }
 }

Juntos, los bloques try, catch y finally forman una red para obtener las excepciones. Primero, la sentencia try recorta el código que puede arrojar una excepción. Si lo hace, la ejecución baja inmediatamente al bloque catch o manejador de excepciones. Cuando termina los procesos de probar y obtener, la ejecución continúa con el bloque finally, ya sea que se haya arrojado una excepción o no. Cuando obtiene una excepción, puede intentar recuperarse con gracia de ella o puede salir del programa (o método).

En el Listado 11, el programa se recupera del error, luego imprime un mensaje para reportar lo que sucedió.


La jerarquía de excepciones

El lenguaje Java incorpora toda una jerarquía de excepciones que consiste en muchos tipos de excepciones agrupados en dos categorías importantes:

  • A las Excepciones verificadas las verifica el compilador (es decir, el compilador se asegurará de que se manejen en algún lugar de su código).
  • A las Excepciones sin verificar (también llamadas excepciones de tiempo de ejecución) no las verifica el compilador.

Cuando un programa causa una excepción, se dice que arroja la excepción. Una excepción verificada se declara al compilador por cualquier método con la palabra clave throws en su firma de método. A esto le sigue una lista de excepciones separadas por comas que el método podría arrojar potencialmente durante el curso de su ejecución. Si su código llama a un método que especifica que arroja uno o más tipos de excepciones, debe manejarlo de algún modo o agregar un throws a su firma de método para pasar ese tipo de excepción.

En el caso de una excepción, el tiempo de ejecución del lenguaje Java busca un manejador de excepciones en algún lugar de la pila. Si no encuentra uno al momento en que llega al inicio de la pila, detendrá abruptamente el programa, como vio en el Listado 10.

Bloques catch múltiples

Usted puede tener bloques catch múltiples pero se deben estructurar en un modo particular. Si alguna excepción es una subclase de otra excepción, entonces la clase hija se ubica delante de la clase padre en el orden del bloque catch. Aquí hay un ejemplo:

try {
 // Code here...
} catch (NullPointerException e) {
 // Handle NPE...
} catch (Exception e) {
 // Handle more general exception here...
}

En este ejemplo, la NullPointerException es una clase hija (eventualmente) de Exception, por lo tanto debe ubicarse delante del bloque Exception catch más general.

Ha visto solo un pequeño atisbo del manejo de excepciones de Java en este tutorial. El tema podría constituir un tutorial por sí mismo. Vea Resources para aprender más acerca del manejo de excepciones en programas Java.

3 de 14 | Anterior | Siguiente

Comentario



static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=tecnologia Java
ArticleID=850709
TutorialTitle=Introducción a la programación Java, parte 2: Construcciones para aplicaciones del mundo real
publish-date=12102012
author1-email=steve.perry@makotoconsulting.com
author1-email-cc=