You are on page 1of 13

##### Paquete Java.

lang ######

http://dis.um.es/~lopezquesada/documentos/IES_0607/DFSI/curso/UT8...

.::MENU ::. INT R O DUC C IO N


CLAS ES
O BJECT

Introduccin
El paquete de lenguaje Java, tambin conocido como java.lang , contiene las clases que son el corazn del lenguaje Java. Las clases de este paquete se agrupan de la siguiente manera: [menu]

EL M TO DO E Q UAL S() EL M TO DO GE TC L ASS( ) EL M TO DO TO STRING( )


O TRO S ME TO DO S

LA C LASE MATC H

Object El abuelo de todas las clases--la clase de la que parten todas las dems.

LA C L ASE STRINGY
STRINGBU F FE R

C RE AC I N DE STRINGS C O NC ATE NAC IN DE STRINGS OTRO S M TO DO S LA C LASE STRINGBU FF E R C REAR UN STRINGBUFFER

Tipos de Datos Encubiertos Una coleccin de clases utilizadas para encubrir variables de tipos primitivos: Boolean, Character, Double, Float, Integer y Long. Cada una de estas clases es una subclase de la clase abstracta Number.

Strings Dos clases que implementan los datos de caracteres. Las Clases String y StringBuffer .

THREAD L A IN T E R F A C E RUNNABLE
C ICLO DE VIDA DE UN THREAD

System y Runtime Estas dos clases permiten a los programas utilizar los recursos del sistema. System proporciona un interface de programacin independiente del sistema para recursos del sistema y Runtime da acceso directo al entorno de ejecucin especfico de un sistema. Utilizar Recursos del Sistema Describe las clases System y Runtime y sus mtodos.

C L A S E IN T E G E R C LASE C HARAC TER

EXC E P TIO NS, ERRO RS Y THROW ABLE


GE STIO N DE E XC EP C IO NES Y ERRO RES TIP O S DE E XC E P C IO NE S

Thread Las clases Thread, ThreadDeath y ThreadGroup implementan las capacidades multitareas tan importantes en el lenguaje Java. El paquete java.lang tambin define el interface Runnable. Este interface es conveniente para activar la clase Java sin subclasificar la clase Thread.

REF ERENC IA S HO M E

Class La clase Class proporciona una descripcin en tiempo de ejecucin de una clase y la clase ClassLoader permite cargar clases en los programas durante la ejecucin.

Math Una librera de rutinas y valores matemticos como pi.

1 de 13

07/02/2011 21:28

##### Paquete Java.lang ######

http://dis.um.es/~lopezquesada/documentos/IES_0607/DFSI/curso/UT8...

Exceptions, Errors y Throwable Cuando ocurre un error en un programa Java, el programa lanza un objeto que indica qu problema era y el estado del intrprete cuando ocurri el error. Slo los objetos derivados de la clase Throwable pueden ser lanzados. Existen dos subclasses principales de Throwable: Exception y Error. Exception es la forma que deben intentar capturar los programas normales. Error se utiliza para los errores catastrficos--los programas normales no capturan Errores. El paquete java.lang contiene las clases Throwable, Exception y Error, y numerosas subclases de Exception y Error que representan problemas especficos. Manejo de Errores Utilizando Excepciones te muestra cmo utilizar las excepciones para manejar errores en sus programas Java.

Process Los objetos Process representan el proceso del sistema que se crea cuando se utiliza el sistema en tiempo de ejecucin para ejecutar comandos del sistema. El paquete java.lang define e implementa la clase genrica Process. El compilador importa automticamente este paquete. Ningn otro paquete se importa de forma automtica .

[menu] La clase object

La clase Object est situada en la parte ms alta del rbol de la herencia en el entorno de desarrollo de Java. Todas las clases del sistema Java son descendentes (directos o indirectos) de la clase Object. Esta clase define los estados y comportamientos bsicos que todos los objetos deben tener, como la posibilidad de compararse unos con otros, de convertirse a cadenas, de esperar una condicin variable, de notificar a otros objetos que la condicin varible a cambiado y devolver la clase del objeto. El mtodo equals() Equals() se utiliza para comparar si dos objetos son iguales. Este mtodo devuelve true si los objetos son iguales, o false si no lo son. Observe que la igualdad no significa que los objetos sean el mismo objeto. Consideremos este cdigo que compara dos enteros.

Integer uno = new Integer(1), otroUno = new Integer(1); if (uno.equals(otroUno)) System.out.println("Los objetos son Iguales");

Este cdigo mostrar Los objetos son Iguales aunque uno y otroUno referencian a dos objetos distintos. Se les considera iguales porque su contenido es el mismo valor entero. Las clases deberan sobreescribir este mtodo proporcionando la comprobacin de igualdad apropiada. Un mtodo equals() debera comparar el contenido de los objetos para ver si son funcionalmente iguales y devolver true si es as. [menu]

El mtodo getClass() . El mtodo getClass() es un mtodo final (no puede sobreescribirse) que

2 de 13

07/02/2011 21:28

##### Paquete Java.lang ######

http://dis.um.es/~lopezquesada/documentos/IES_0607/DFSI/curso/UT8...

devuelve una representacin en tiempo de ejecucin de la clase del objeto. Este mtodo devuelve un objeto Class al que se le puede pedir varia informacin sobre la clase, como su nombre, el nombre de su superclase y los nombres de los interfaces que implementa. El siguiente mtodo obtiene y muestra el nombre de la clase de un objeto.

void PrintClassName(Object obj) { System.out.println("La clase del Objeto es " + obj.getClass().getName()); }

Un uso muy manejado del mtodo getClass() es crear un ejemplar de una clase sin conocer la clase en el momento de la compilacin. Este mtodo de ejemplo, crea un nuevo ejemplar de la misma clase que obj que puede ser cualquier clase heredada desde Object (lo que significa que podra ser cualquier clase).

Object createNewInstanceOf(Object obj) { return obj.getClass().newInstance(); }

[menu]

El mtodo toString() Este mtodo devuelve una cadena de texto que representa al objeto. Se puede utilizar toString para mostrar un objeto. Por ejemplo, se podra mostrar una representacin del Thread actual de la siguiente forma.

System.out.println(Thread.currentThread().toString()); System.out.println(new Integer(44).toString());

La representacin de un objeto depende enteramente del objeto. El String de un objeto entero es el valor del entero mostrado como texto. El String de un objeto Thread contiene varios atributos sobre el thread, como su nombre y prioridad. Por ejemplo, las dos lneas anteriores daran la siguiente salida.

Thread[main,5,main]

El mtodo toString() es muy til para depuracin y tambin puede sobrescribir este mtodo en todas las clases. Otros mtodos de Object cubiertos en otras lecciones o secciones La clase Object proporciona un mtodo, finalize() que limpia un objeto antes de recolectar la basura. Este mtodo se explica en la leccin Eliminar Objetos no Utilizados . Tambin en: Escribir un Mtodo finalize() puedes ver cmo sobreescribir este mtodo para manejar las necesidades de finalizacin de las clases La clase Object tambim proporciona otros cinco mtodos.

3 de 13

07/02/2011 21:28

##### Paquete Java.lang ######

http://dis.um.es/~lopezquesada/documentos/IES_0607/DFSI/curso/UT8...

notify() notifyAll() wait() (tres versiones) que son crticos cuando se escriben programas Java con mltiples thread. Estos mtodos ayudan a asegurarse que los thread estn sincronizados y se cubren en Threads de Control . [menu]

La clase math
La clase Math representa la librera matemtica de Java. Las funciones que contiene son las de todos los lenguajes, parece que se han metido en una clase solamente a propsito de agrupacin, por eso se encapsulan en Math, y lo mismo sucede con las dems clases que corresponden a objetos que tienen un tipo equivalente (Character, Float, etc.). El constructor de la clase es privado, por los que no se pueden crear instancias de la clase. Sin embargo, Math es public para que se pueda llamar desde cualquier sitio y static para que no haya que inicializarla. [menu]

Funciones matemticas Si se importa la clase, se tiene acceso al conjunto de funciones matemticas estndar:

Math.abs( x ) para int, long, float y double Math.sin( double ) Math.cos( double ) Math.tan( double ) Math.asin( double ) Math.acos( double ) Math.atan( double ) Math.atan2( double,double ) Math.exp( double ) Math.log( double ) Math.sqrt( double ) Math.ceil( double ) Math.floor( double ) Math.rint( double ) Math.pow( a,b ) Math.round( x ) para double y float Math.random() devuelve un double Math.max( a,b ) para int, long, float y double Math.min( a,b ) para int, long, float y double Math.E para la base exponencial Math.PI para PI

[menu]

La clase String y StringBuffer


En Java no existe un tipo de datos primitivo que sirva para la manipulacin de cadenas de caracteres. En su lugar se utiliza una clase definida en la API que es la clase String. Esto significa que en Java las cadenas de caracteres son, a todos los efectos, objetos que se manipulan como tales, aunque existen ciertas operaciones, como la creacin de Strings, para los que el lenguaje tiene soporte directo, con lo que se simplifican algunas operaciones. La clase String forma parte del package java.lang y se describe completamente en la documentacin del API del JDK.

4 de 13

07/02/2011 21:28

##### Paquete Java.lang ######

http://dis.um.es/~lopezquesada/documentos/IES_0607/DFSI/curso/UT8...

Creacin de Strings
Un String puede crearse como se crea cualquier otro objeto de cualquier clase; mediante el operador new:

String s = new String("Esto es una cadena de caracteres");

Observese que los literales de cadena de caracteres se indican entre comillas dobles ("), a diferencia de los caracteres, que utilizan comillas simples ('). Sin embargo tambin es posible crear un String directamente, sin usar el operador new, haciendo una asignacin simple (como si se tratara de un dato primitivo):
String s = "Esto es una cadena de caracteres";

Ambas expresiones conducen al mismo objeto. Los Strings no se modifican una vez que se les ha asignado valor. Si se produce una reasignacin se crea un nuevo objeto String con el nuevo contenido. Adems la clase String proporciona constructores para crear Strings a partir de arrays de caracteres y arrays de bytes. Consultar la documentacin del API del JDK para ms detalles. [menu]

Concatenacin de Strings
Java define el operador + (suma) con un significado especial cuando las operandos son de tipo String. En este caso el operador suma significa concatenacin. El resultado de la concatenacin es un nuevo String compuesto por las dos cadenas, una tras otra. Por ejemplo:

String x = "Concatenar" + "Cadenas";

da como resultado el String "ConcatenarCadenas". Tambin es posible concatenar a un String datos primitivos, tanto numricos como booleanos y char. Por ejemplo, se puede usar: int i = 5; String x = "El valor de i es " + i; Cuando se usa el operador + y una de las variables de la expresin es un String, Java transforma la otra variable (si es de tipo primitivo) en un String y las concatena. Si la otra variable es una referencia a un objeto entonces invoca el mtodo toString() que existe en todas las clases (es un mtodo de la clase Object). [menu]

Otros mtodos de la clase String


La clase String dispone de una amplia gama de mtodos para la manipulacin de las cadenas de caracteres. Para una referencia completa consultar la documentacin del API del JDK. El siguiente cuadro muestra

5 de 13

07/02/2011 21:28

##### Paquete Java.lang ######

http://dis.um.es/~lopezquesada/documentos/IES_0607/DFSI/curso/UT8...

un resumen con algunos de los mtodos ms significativos: Mtodo char charAt(int index) Descripcin Devuelve el carcter en la posicin indicada por index. El rango de index va de 0 a length() - 1. Compara el String con el objeto especificado. El resultado es true si y solo si el argumento es no nulo y es un objeto String que contiene la misma secuencia de caracteres. Compara el String con otro, ignorando consideraciones de maysculas y minsculas. Los dos Strings se consideran iguales si tienen la misma longitud y, los caracteres correspondientes en ambos Strings son iguales sin tener en cuenta maysculas y minsculas. Devuelve el indice donde se produce la primera aparicin de c. Devuelve -1 si c no est en el string. Igual que el anterior pero buscando la subcadena representada por s. Devuelve la longitud (nmero de caracteres) Devuelve un substring ndice begin hasta el end del String el

boolean obj)

equals(Object

boolean equalsIgnoreCase(String s)

int indexOf(char c)

int indexOf(String s) int length() String substring(int begin, int end)

desde

static String valueOf(int i)

Devuelve un string que es la representacin del entero i. Observese que este mtodo es esttico. Hay mtodos equivalentes donde el argumento es un float, double, etc. Transforman el string en un array de caracteres, o a maysculas o a minsculas.

char[] toCharArray() String toLowerCase() String toUpperCase()

[menu]

La clase StringBuffer
Dado que la clase String slo manipula cadenas de caracteres constantes resulta poco conveniente cuando se precisa manipular intensivamente cadenas (reemplazando caracteres, aadiendo o suprimiendo, etc.). Cuando esto es necesario puede usarse la clase StringBuffer definida tambin en el package java.lang. del API. Esta clase implanta un buffer dinmico y tiene mtodos que permiten su manipulacin cmodamente. Crear un StringBuffer El mtodo constructor utilizado por reverseIt() para incializar dest requiere un entero como argumento que indique el tamao inicial del nuevo StringBuffer.

StringBuffer(int length)

6 de 13

07/02/2011 21:28

##### Paquete Java.lang ######

http://dis.um.es/~lopezquesada/documentos/IES_0607/DFSI/curso/UT8...

reverseIt() podra haber utilizado el constructor por defecto para dejar indeterminada la longitud del buffer hasta un momento posterior. Sin embargo, es ms eficiente especificar la longitud del buffer si se conoce, en vez de asignar memoria cada vez que se aadan caracteres al buffer. La clase StringBuffer se utiliza prcticamente siempre que se desee modificar una cadena de caracteres. Completa los mtodos de la clase String ya que stos realizan slo operaciones sobre el texto que no conllevan un aumento o disminucin del nmero de letras del String. Recurdese que hay muchos mtodos cuyos argumentos deben ser objetos String, que antes de pasar esos argumentos habr que realizar la conversin correspondiente. [menu]

La clase Thread

La Mquina Virtual Java (JVM) es un sistema multi-thread. Es decir, es capaz de ejecutar varias secuencias de ejecucin (programas) simultneamente. La JVM gestiona todos los detalles, asignacin de tiempos de ejecucin, prioridades, etc, de forma similar a como gestiona un Sistema Operativo mltiples procesos. La diferencia bsica entre un proceso de Sistema Operativo y un Thread Java es que los Threads corren dentro de la JVM, que es un proceso del Sistema Operativo y por tanto comparten todos los recursos, incluida la memoria y las variables y objetos all definidos. A este tipo de procesos donde se comparte los recursos se les llama a veces 'procesos ligeros' (lightweight process). Java da soporte al concepto de Thread desde el mismo lenguaje, con algunas clases e interfaces definidas en el package java.lang y con mtodos especficos para la manipulacin de Threads en la clase Object. Desde el punto de vista de las aplicaciones los threads son tiles porque permiten que el flujo del programa sea divido en dos o ms partes, cada una ocupndose de alguna tarea. Por ejemplo un Thread puede encargarse de la comunicacin con el usuario, mientras otros actuan en segundo plano, realizando la transmisin de un fichero, accediendo a recursos del sistema (cargar sonidos, leer ficheros ...), etc. De hecho todos los programas con interface grfico (AWT o Swing) son multithread porque los eventos y las rutinas de dibujado de las ventanas corren en un thread distinto al principal.

La forma ms directa para hacer un programa multi-thread es extender la clase Thread, y redefinir el mtodo run(). Este mtodo es invocado cuando se inicia el thread (mediante una llamada al mtodo start() de la clase thread). El thread se inicia con la llamada al mtodo run y termina cuando termina ste. El ejemplo ilustra estas ideas:

public class ThreadEjemplo extends Thread { public ThreadEjemplo(String str) { super(str); } public void run() { for (int i = 0; i < 10 ; i++) System.out.println(i + " " + getName()); System.out.println("Termina thread " + getName()); } public static void main (String [] args) { new ThreadEjemplo("Pepe").start(); new ThreadEjemplo("Juan").start(); System.out.println("Termina thread main"); } }

Compila y ejecuta el programa. La salida, ser algo asi: Termina thread main

7 de 13

07/02/2011 21:28

##### Paquete Java.lang ######

http://dis.um.es/~lopezquesada/documentos/IES_0607/DFSI/curso/UT8...

0 Pepe 1 Pepe 2 Pepe 3 Pepe 0 Juan 4 Pepe 1 Juan 5 Pepe 2 Juan 6 Pepe 3 Juan 7 Pepe 4 Juan 8 Pepe 5 Juan 9 Pepe 6 Juan Termina thread Pepe 7 Juan 8 Juan 9 Juan Termina thread Juan Ejecuta varias veces el programa. Vers que no siempre se ejecuta igual. Notas sobre el programa: La clase Thread est en el package java.lang. Por tanto no es necesario el import. El constructor public Thread(String str) recibie un parmetro que es la identificacin del Thread. El mtodo run contiene el bloque de ejecucin del Thread. Dentro de l, el mtodo getName() devuelve el nombre del Thread (el que se ha pasado como argumento al constructor). El mtodo main crea dos objetos de clase ThreadEjemplo y los inicia con la llamada al mtodo start(). (el cual inicia el nuevo thread y llama al mtodo run() ). Observa en la salida el primer mensaje, de finalizacin del thread main. La ejecucin de los threads es asncrona. Realiza la llamada al mtodo start(), ste le devuelve control y continua su ejecucin, independiente de los otros threads. En la salida los mensajes de un thread y otro se van mezclando. La mquina virtual asigna tiempos a cada thread. [menu]

La Interface Runnable La interface Runnable proporciona un mtodo alternativo a la utilizacin de la clase Thread, para los casos en los que no es posible hacer que nuestra clase extienda la clase Thread. Esto ocurre cuando nuestra clase, que deseamos correr en un thread independiente deba extender alguna otra clase. Dado que no existe herencia mltiple, nuestra clase no puede extender a la vez la clase Thread y otra ms. En este caso nuestra clase debe implantar la interface Runnable, variando ligeramente la forma en que se crean e inician los nuevos threads. El siguiente ejemplo es equivalente al del apartado anterior, pero utilizando la interface Runnable:

public class ThreadEjemplo implements Runnable { public void run() { for (int i = 0; i < 5 ; i++) System.out.println(i + " " + Thread.currentThread().getName()); System.out.println("Termina thread " + Thread.currentThread().getName()); } public static void main (String [] args) { new Thread ( new ThreadEjemplo() , "Pepe").start(); new Thread ( new ThreadEjemplo() , "Juan").start();

8 de 13

07/02/2011 21:28

##### Paquete Java.lang ######

http://dis.um.es/~lopezquesada/documentos/IES_0607/DFSI/curso/UT8...

System.out.println("Termina thread main"); } }

Observese en este caso: Se implanta la interface Runnable en lugar de extender la clase Thread. El constructor que haba antes no es necesario. En el main observa la forma en que se crea el thread. Esa expresin es equivalente a:
ThreadEjemplo ejemplo = new ThreadEjemplo(); Thread thread = new Thread ( ejemplo , "Pepe") ; thread.start();

Primero se crea la instancia de nuestra clase. Despus se crea una instancia de la clase Thread, pasando como parmetros la referencia de nuestro objeto y el nombre del nuevo thread. Por ltimo se llama al mtodo start de la clase thread. Este mtodo iniciar el nuevo thread y llamar al mtodo run() de nuestra clase. Por tlimo, obsrvese la llamada al mtodo getName() desde run(). getName es un mtodo de la clase Thread, por lo que nuestra clase debe obtener una referencia al thread propio. Es lo que hace el mtodo esttico currentThread() de la clase Thread. [menu]

El ciclo de vida de un Thread

Cuando se instancia la clase Thread (o una subclase) se crea un nuevo Thread que est en en su estado inicial ('New Thread' en el grfico). En este estado es simplemente un objeto ms. No existe todava el thread en ejecucin. El nico mtodo que puede invocarse sobre l es el mtodo start. Cuando se invoca el mtodo start sobre el thread el sistem crea los recursos necesarios, lo planifica (le asigna prioridad) y llama al mtodo run. En este momento el thread est corriendo. Si el mtodo run invoca internamente el mtodo sleep o wait o el thread tiene que esperar por una operacin de entrada/salida, entonces el thread pasa al estado 'no runnable' (no ejecutable) hasta que la condicin de espera finalice. Durante este tiempo el sistema puede ceder control a otros threads activos. Por ltimo cuando el mtodo run finaliza el thread termina y pasa a la situacin 'Dead' (Muerto). [menu]

La Clase Integer Cada tipo numrico tiene su propia clase de objetos. As el tipo int tiene el objeto Integer . De la misma forma que con la clase Character , se han codificado muchas funciones tiles dentro de los mtodos de la clase Integer . Declaraciones La primera sentencia crear una variable int y la segunda un objeto Integer:

9 de 13

07/02/2011 21:28

##### Paquete Java.lang ######

http://dis.um.es/~lopezquesada/documentos/IES_0607/DFSI/curso/UT8...

int i; Integer I;

Valores de Integer

Integer.MIN_VALUE; Integer.MAX_VALUE;

Mtodos de Integer String Integer.toString( int i ) Convierte el int que se pasa al mtodo en su representacin como cadena

String Integer.toString(int i,int base) int I.parseInt( String s ) int I.parseInt( String s,int base ) Convierte la variable String en el valor int que representa Igual que el anterior, a excepcin de que se indica una base distinta a la decimal

Integer Integer.valueOf( String s ) Integer s,int base) Integer.valueOf(String

int I.intValue() float I.floatValue() String I.toString() boolean I.equals( Object obj ) long I.longValue() double I.doubleValue() int I.hashCode() En los mtodos toString() , parseInt() y valueOf() que no se especifica la base sobre la que se trabaja, se asume que es base 10 . [menu]

La clase Character Al trabajar con caracteres se necesitan muchas funciones de comprobacin y traslacin. Estas funciones estn empleadas en la clase Character . De esta clase s que se pueden crear instancias, al contrario que sucede con la clase Math . Declaraciones La primera sentencia crear una variable carcter y la segunda un objeto Character:

char c;

10 de 13

07/02/2011 21:28

##### Paquete Java.lang ######

http://dis.um.es/~lopezquesada/documentos/IES_0607/DFSI/curso/UT8...

Character C;

Mtodos de la clase Character C = new Character( 'J' ); char c = C.charValue(); String s = C.toString(); [menu]

La clase Exceptions, Errors y Throwable. Cuando ocurre un error en un programa Java, el programa lanza un objeto que indica que problema era y el estado del interprete cuando ocurri el error. Slo los objetos derivados de la clase Throwable pueden ser lanzados. Existen dos subclases principales de Throwable: Exception y Error. Exception es la forma que deben intentar capturar los programas normales. Error se utiliza para los errores catastrficos -- los programas normales no capturan Errores. El paquete java.lang contiene las clases Throwable, Exception y Error, y numerosas subclases de exception y Error que representan problemas especficos. Manejo de Errores utilizando Excepciones te muestra como utilizar las excepciones para manejar errores en sus programas Java. [menu]

GESTIN DE EXCEPCIONES Y ERRORES El control de flujo en un programa Java puede hacerse mediante las ya conocidas sentencias estructuradas ( if, while, return ). Pero Java va mucho ms all, mediante una tcnica de programacin denominada gestin de excepciones . Mediante las excepciones se podr evitar repetir continuamente cdigo, en busca de un posible error, y avisar a otros objetos de una condicin anormal de ejecucin durante un programa. Durante este captulo estudiaremos la gestin de excepciones y errores, sin pretender profundizar demasiado, pero s fijando la base conceptual de lo que este modo de programacin supone. Mediante la gestin de excepciones se prescindir de sentencias de control de errores del tipo:

if ( error == true )

return ERROR; [menu]

Tipos de excepciones Existen varios tipos fundamentales de excepciones: Error : Excepciones que indican problemas muy graves, que suelen ser no recuperables y no deben casi nunca ser capturadas. Exception : Excepciones no definitivas, pero que se detectan fuera del tiempo de ejecucin. RuntimeException : Excepciones que se dan durante la ejecucin del

11 de 13

07/02/2011 21:28

##### Paquete Java.lang ######

http://dis.um.es/~lopezquesada/documentos/IES_0607/DFSI/curso/UT8...

programa. Todas las excepciones tienen como clase base la clase Throwable , que est incluida en el paquete java.lang , y sus mtodos son: Trowable( String mensaje ) ; Constructor. La cadena es opcional Throwable fillInStackTrace(); Llena la pila de traza de ejecucin. String getLocalizedMessage(); Crea una descripcin local de este objeto. String getMessage(); Devuelve la cadena de error del objeto. void printStackTrace( PrintStream_o_PrintWriter s ) ; Imprime este objeto y su traza en el flujo del parmetro s, o en la salida estndar (por defecto). String toString; Devuelve una breve descripcin del objeto. Funcionamiento Para que el sistema de gestin de excepciones funcione, se ha de trabajar en dos partes de los programas: Definir qu partes de los programas crean una excepcin y bajo qu condiciones. Para ello se utilizan las palabras reservadas throw y throws . Comprobar en ciertas partes de los programas si una excepcin se ha producido, y actuar en consecuencia. Para ello se utilizan las palabras reservadas try, catch y finally . Manejo de excepciones: try - catch - finally Cuando el programador va a ejecutar un trozo de cdigo que pueda provocar una excepcin (por ejemplo, una lectura en un fichero), debe incluir este fragmento de cdigo dentro de un bloque try :

try {

// Cdigo posiblemente problemtico

Pero lo importante es cmo controlar qu hacer con la posible excepcin que se cree. Para ello se utilizan las clausulas catch , en las que se especifica que accin realizar:

try {

// Cdigo posiblemente problemtico

} catch( tipo_de_excepcion e) {

// Cdigo para solucionar la excepcin e

} catch( tipo_de_excepcion_mas_general e) {

// Cdigo para solucionar la excepcin e

12 de 13

07/02/2011 21:28

##### Paquete Java.lang ######

http://dis.um.es/~lopezquesada/documentos/IES_0607/DFSI/curso/UT8...

En el ejemplo se observa que se pueden anidar sentencias catch , pero conviene hacerlo indicando en ltimo lugar las excepciones ms generales (es decir, que se encuentren ms arriba en el rbol de herencia de excepciones), porque el intrprete Java ejecutar aquel bloque de cdigo catch cuyo parmetro sea del tipo de una excepcin lanzada. Si por ejemplo se intentase capturar primero una excepcin Throwable , nunca llegaramos a gestionar una excepcin Runtime , puesto que cualquier clase hija de Runtime es tambin hija de Throwable , por herencia. Si no se ha lanzado ninguna excepcin el cdigo contina sin ejecutar ninguna sentencia catch . Pero, y si quiero realizar una accin comn a todas las opciones?. Para insertar fragmentos de cdigo que se ejecuten tras la gestin de las excepciones. Este cdigo se ejecutar tanto si se ha tratado una excepcin ( catch ) como sino. Este tipo de cdigo se inserta en una sentencia finally , que ser ejecutada tras el bloque try o catch:

try {

} catch( Exception e ) {

} finally {

// Se ejecutara tras try o catch

Referencias:
Java 2. Curso de programacion 3 edicion. Fco. Javier Ceballos.

[menu]

Manual Java 2007

13 de 13

07/02/2011 21:28