Escolar Documentos
Profissional Documentos
Cultura Documentos
QU ES UNA EXCEPCIN?
Una excepcin es una situacin anmala a la que llega la ejecucin de un
programa. Estas situaciones anmalas pueden ser desde el intento de abrir un
fichero que no existe, a la divisin por cero. Java proporciona un mecanismo
para detectar y solucionar las excepciones que se puede llegar a producir
durante la ejecucin de un programa. En Java estamos obligados a tratar las
excepciones cuando se producen, bien gestionndolas directamente o bien
desentendindonos de ellas, pero hasta esto ltimo debemos hacerlo
explcitamente.
TIPOS DE EXCEPCIONES
En Java existen dos grandes tipos de excepciones: los Errores y las
Excepciones propiamente dichas.
Los Errores son situaciones irrecuperables, por ejemplo fallos de la mquina
virtual. Ante ellos no hay ms alternativa que cerrar la aplicacin, y no estamos
obligados a gestionarlas. Las excepciones son situaciones anmalas ante las
cuales bien debemos reaccionar o bien nos desentendemos. Cuando una
excepcin se produce se acompaa de toda la informacin relevante para que
podamos gestionarla
Throwable
Es la clase que agrupa todas las excepciones que podemos utilizar en nuestra
aplicacin hecha en Java e inclusive si queremos crear nuestro propio tipo de
excepcin podemos hacerlo al heredar de la clase Exception o de alguna de
sus sub-clases.
imagen
que
posee,
las
excepciones
ms
comunes
como
la ArithmeticException que es obtenida cuando hay un problema con una
operacin aritmtica.
GESTIN DE EXCEPCIONES
Toda sentencia susceptible de lanzar una excepcin debe ir en un bloque
try{...}. Si se lanza la excepcin, la ejecucin se abandonar en la sentencia
que la lanz y se ejecutar el bloque catch(Exception e) {...} que atrape la
excepcin generada.
BLOQUE TRY
Try en ingls es el verbo intentar, as que todo el cdigo que vaya dentro de
esta sentencia ser el cdigo sobre el que se intentar capturar el error si se
produce y una vez capturado hacer algo con l. Lo ideal es que no ocurra un
error, pero en caso de que ocurra un bloque try nos permite estar preparados
para capturarlo y tratarlo. As un ejemplo sera:
try {
System.out.println(bloque de cdigo donde pudiera saltar un
error es este);
}
BLOQUE CATCH
En este bloque definimos el conjunto de instrucciones necesarias o de
tratamiento del problema capturado con el bloque try anterior. Es decir, cuando
se produce un error o excepcin en el cdigo que se encuentra dentro de un
bloque try, pasamos directamente a ejecutar el conjunto de sentencias que
tengamos en el bloque catch. Esto no es exactamente as pero ya
explicaremos ms adelante todo el funcionamiento. De momento para una
mejor comprensin vamos a considerar que esto es as.
catch (Exception e) {
System.out.println(bloque
problema);
}
de
cdigo
donde
se
trata
el
Fjate que despus de catch hemos puesto unos parntesis donde pone
Exception e. Esto significa que cuando se produce un error Java genera un
objeto de tipo Exception con la informacin sobre el error y este objeto se enva
al bloque catch.
BLOQUE FINALLY
Y para finalizar tenemos el bloque finally que es un bloque donde podremos
definir un conjunto de instrucciones necesarias tanto si se produce error o
excepcin como si no y que por tanto se ejecuta siempre.
finally {
System.out.println(bloque de cdigo ejecutado siempre);
}
Ejemplo:
Try{
readFromFile(esteFicheroNoExiste);
}
catch(FileNotFoundException e) {
//Aqu tratamos esta excepcin
}
catch(IOException e) {
//Aqu tratamos esta otra
}
finally {
//Aqu realizamos las tareas comunes.
}
Si el fichero del que se pretende leer no existe, se lanza una excepcin del tipo
FileNotFoundException que atrapamos en el bloque catch correspondiente. En
la jerarqua de las clases excepcin, FileNotFoundException hereda de
IOException que a su vez hereda de Exception que es la raz de esta jerarqua;
por lo tanto los bloques catch deben aparecer de mayor a menor profundidad
en la jerarqua, ya que de lo contrario como un FileNotFoundException es un
IOException, la excepcin quedara atrapada en este bloque
FUNCIN
Clase DriverManager
Interface Conection
Interface Statement
Interface
Interface
ResultSetMetadata
programa
necesitamos
las
clases
que
Driver JDBC
Llamamos driver al conjunto de clases que implementan las interfaces
JDBC
El driver proporciona la comunicacin entre la aplicacin Java y la base de
datos
el
mtodo
esttico getConnection() de
la
DriverManager.getConnection(String url);
url es un String que nos permite localizar la base de datos. Normalmente se
compone de tres campos:
jdbc:tipoBD:datos_de_conexion
Para MySQL, el formato es:
"jdbc:mysql://ordenador_donde_est_la_base_de_datos/base_de_dato
s".
Deberemos indicar el nombre o IP del ordenador en el que se encuentra el
servidor de base de datos y a continuacin el nombre de la base de datos.
Una sobrecarga del mtodo getConnection acepta, adems de la url, el usuario
y contrasea de la base de datos.
Este mtodo devuelve un objeto que implementa la interfaz Connection.
Por ejemplo, si tenemos corriendo en nuestro ordenador el servidor de bases
de datos, y nos queremos conectar a una base de datos llamada prueba que
tiene un usuario root y contrasea 1daw escribiremos:
Connection
conexion
=DriverManager.getConnection("jdbc:mysql://localhost/
prueba","root",
"1daw");
manejan
mediante
un
objeto
que
implementa
la
ResultSet
sentenciaSQL);
executeQuery(String
Por ejemplo, si en la base de datos tenemos una tabla llamada persona, una
consulta de todos los registros de la tabla sera:
ResultSet rs = s.executeQuery("select * from persona");
5. Manipular el resultado de la consulta:
El objeto de tipo ResultSet devuelto por la consulta de seleccin dispone de un
cursor para desplazarse por los registros y de mtodos para acceder al valor de
cada campo.
Desplazarse por los registros de un ResultSet
Una vez obtenido, su cursor se sita justo antes del primer registro obtenido.
Por defecto, un ResultSet es un objeto de slo avance y solo lectura. El
recorrido se har siempre desde el principio hacia delante y los campos no
podrn ser modificados. Se pueden crear tambin ResultSets desplazables de
lectura/escritura.
El mtodo next() permite desplazarnos por los registros. Una llamada a este
mtodo desplaza el cursor al siguiente registro. Devuelve false si se ha llegado
al final y true en caso contrario.
while (rs.next()) {
.....
}