CAPTURAR UNA EXCEPCION

sara
06 de Septiembre del 2005
hola, tengo una clase java que lo que hace es ejecutar unas sentencias sql que estan almacenadas en un fichero. si una de las sentencias es un drop table de una tabla que no existe quiero que la clase la ignore y siga ejecutando la clase no se si me entendeis. El caso es que yo capturo la excepcion y digo que no haga nada, aun así la ejecucion de la clase se para y no continua leyendo el fichero, Os pongo el codigo a ver si me podeis decir lo que hago mal ok? fijaros sobre todo en el catch que supongo que es donde tendre el error. Muchas gracias!

public int EjecutarFichero(String usuario, String password,
String identificador) {
GestorDeConexiones gdc = new GestorDeConexiones();
java.io.FileOutputStream fichero = null;
FileInputStream ficheroEntrada = null;
byte[] buffer = new byte[1024];
//me creo el fichero donde almacenare la informacion a ejecutar
String path = "C:/scriptCreaBd.txt";
File f = new File(path);
try {
fichero = new FileOutputStream(f);
}
catch (FileNotFoundException fe) {
fe.printStackTrace();
return -1;
}

//relleno ese fichero con la informacion que me interesa
try {
Connection con = gdc.ConexionServauto("system", "sara_system");
String query1 = "SELECT SCRIPT FROM ESQ_BD WHERE identificador='" +
identificador + "'";
PreparedStatement ps = con.prepareStatement(query1);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
int size;
java.io.InputStream is = (rs.getClob(1)).getAsciiStream();
while ( (size = is.read(buffer)) != -1) {
fichero.write(buffer, 0, size);
fichero.flush();
}
con.close();
con = gdc.ConexionAlumno(usuario, password);
Statement stm = con.createStatement();
ficheroEntrada = new FileInputStream(f);
String scriptf = "";
while ( (size = ficheroEntrada.read(buffer)) != -1) {
String script = new String(buffer, 0, size);
scriptf = scriptf + script;
}
StringTokenizer str = new StringTokenizer(scriptf, ";");
while (str.hasMoreTokens()) {
String batch = str.nextToken();
stm.addBatch(batch);
}
stm.executeBatch();
f.delete();
return 0;

}
else {
return -1;
}

}
catch (Exception ex) {
if(ex.getMessage().equalsIgnoreCase("ORA-00942"))
{}
return -1;
}

}

Alberto
06 de Septiembre del 2005
Lo que te hace es cancelar los procesos que tienes hasta entonces. Pero puedes seguir ejecutando otras cosas. Pierdes todos los valores que tienes en ese momento. ¿Entiendes?