Java 异常后执行程序
您好,我想执行一个程序,将文本文档插入数据库。现在我刚刚完成错误部分。此时,它将信息输入数据库,但当数据字段中出现错误时,程序停止执行 我的目标是它将记录错误并继续执行程序。例如,如果文档中有10行,假设第三行有一个错误,那么不管怎样,我都希望插入9行。在本例中,我的代码将只插入前两行。有没有一种方法或类似的东西可以帮助我实现这一点 **编辑格式化Java 异常后执行程序,java,exception,execution,Java,Exception,Execution,您好,我想执行一个程序,将文本文档插入数据库。现在我刚刚完成错误部分。此时,它将信息输入数据库,但当数据字段中出现错误时,程序停止执行 我的目标是它将记录错误并继续执行程序。例如,如果文档中有10行,假设第三行有一个错误,那么不管怎样,我都希望插入9行。在本例中,我的代码将只插入前两行。有没有一种方法或类似的东西可以帮助我实现这一点 **编辑格式化 try { while (true) { String line = reader.readLi
try {
while (true) {
String line = reader.readLine();
if (line == null) {
break;
}
String[] parts = line.split("");
for (String part : parts) {
array1.add(part);
}
String query = " insert into FRONTMC.HECHO (folio_hecho, folio_orden, emisora, serie,"
+ "clave_sentido, titulos_hecho, precio, importe, liquidacion, contraparte, id_estatus, isin, contrato,"
+ "secondary_exec_id, exec_id, F11_ClOrdID, fecha_recepcion, fecha_sentra)"
+ " values ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,convert(varchar(30),cast(? as datetime),120),convert(varchar(30),cast(? as datetime),120))";
PreparedStatement preparedStmt = con.prepareStatement(query);
for (int counter = 0; counter < array1.size(); counter++) {
if (array1.get(counter).substring(0, 3).equals("37=")) {
preparedStmt.setString(1, array1.get(counter).substring(3));
}
if (array1.get(counter).substring(0, 3).equals("37=")) {
preparedStmt.setString(2, array1.get(counter).substring(3));
}
if (array1.get(counter).substring(0, 3).equals("49=")) {
preparedStmt.setString(3, array1.get(counter).substring(3));
}
if (array1.get(counter).substring(0, 4).equals("447=")) {
preparedStmt.setString(4, array1.get(counter).substring(4));
}
if (array1.get(counter).substring(0, 3).equals("54=")) {
preparedStmt.setString(5, array1.get(counter).substring(3));
}
if (array1.get(counter).substring(0, 3).equals("32=")) {
preparedStmt.setString(6, array1.get(counter).substring(3));
}
if (array1.get(counter).substring(0, 3).equals("31=")) {
preparedStmt.setString(7, array1.get(counter).substring(3));
}
if (array1.get(counter).substring(0, 4).equals("381=")) {
preparedStmt.setString(8, array1.get(counter).substring(4));
}
if (array1.get(counter).substring(0, 3).equals("63=")) {
preparedStmt.setString(9, array1.get(counter).substring(3));
}
if (array1.get(counter).substring(0, 4).equals("448=")) {
preparedStmt.setString(10, array1.get(counter).substring(4));
}
if (array1.get(counter).substring(0, 4).equals("150=")) {
preparedStmt.setString(11, array1.get(counter).substring(4));
}
if (array1.get(counter).substring(0, 3).equals("48=")) {
preparedStmt.setString(12, array1.get(counter).substring(3));
}
if (array1.get(counter).substring(0, 2).equals("1=")) {
preparedStmt.setString(13, array1.get(counter).substring(2));
}
if (array1.get(counter).substring(0, 4).equals("527=")) {
preparedStmt.setString(14, array1.get(counter).substring(4));
}
if (array1.get(counter).substring(0, 3).equals("17=")) {
preparedStmt.setString(15, array1.get(counter).substring(3));
}
if (array1.get(counter).substring(0, 3).equals("11=")) {
preparedStmt.setString(16, array1.get(counter).substring(3));
}
if (array1.get(counter).substring(0, 3).equals("52=")) {
String date = array1.get(counter).substring(3);
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMdd");
SimpleDateFormat sdf2 = new SimpleDateFormat("dd/MM/yyyy");
String ds2 = sdf2.format(sdf1.parse(date));
String x = date.substring(9, 21);
String newfecha1 = ds2 + " " + x;
preparedStmt.setString(17, newfecha1);
}
if (array1.get(counter).substring(0, 3).equals("52=")) {
String date = array1.get(counter).substring(3);
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMdd");
SimpleDateFormat sdf2 = new SimpleDateFormat("dd/MM/yyyy");
String ds2 = sdf2.format(sdf1.parse(date));
String x = date.substring(9, 21);
String newfecha1 = ds2 + " " + x;
preparedStmt.setString(18, newfecha1);
}
}
preparedStmt.execute();
}
System.out.println(array1);
System.out.println("insert complete");
new Thread(new Runnable() {
@Override
public void run() {
exitomsj();
}
}).start();
reader.close();
} catch (Exception tryerror) {
System.out.println("Error en dato");
tryerror.printStackTrace();
}
试试看{
while(true){
字符串行=reader.readLine();
如果(行==null){
打破
}
String[]parts=line.split(“”);
用于(字符串部分:部分){
1.增加(部分);
}
String query=“插入FRONTMC.HECHO(对开对开、对开对开对开、对开对开对开、对开对开对开、对开对开对开、对开对开对开
+clave_Senido、Titolos_hecho、precio、importe、liquidacion、contraparte、Idu estatus、isin、contrato、
+二级执行id,执行id,F11克隆id,接收,接收
+“值(?,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,转换(varchar(30),cast(?as datetime),120),转换(varchar(30),cast(?as datetime),120));
PreparedStatement preparedStmt=con.prepareStatement(查询);
对于(int counter=0;计数器
回顾一下主要的清洁需求,你的问题是
mainLoop:
for (int i = 0; i != someVariable; i++) {
//do something
nestedLoop:
for (int ii = 0; ii != someOtherVariable; ii++) {
//some code...
/*
** Here, you can then skip the remainder of the "nestedLoop" block,
** and start the next iteration of the "mainLoop" using `continue mainLoop;`
*/
//some more code...
}
}