有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何处理while循环中的异常?

我在java遇到过这样的情况:

while(resultset.next()){
   try{
      //some executable prepared statements written
   }
   catch(MySQLIntegrityConstraintViolationException ex){
      //block2
   }
   catch(SQLException ex){
      //block1
   }
}

现在,我想做的是,如果看到一个MySQLIntegrityConstraintViolationException,我必须跳过它,继续下一个记录。。。 我找不到这样做的机制。 请有人建议应该怎么做,以便忽略例外情况

请让我知道。。事先非常感谢


共 (2) 个答案

  1. # 1 楼答案

    我想你可能会遇到任何其他异常,试着做以下操作,看看你是否遇到任何其他异常

    while(resultset.next()){
       try{
      //some executable prepared statements written
       }
       catch(Exception ex){
       if(ex instanceof MySQLIntegrityConstraintViolationException)
       continue;
       else
       ex.printStackTrace();
      }
    
    }
    
  2. # 2 楼答案

    更好地了解您的数据库

    这里有很多问题

    1)您准备的对账单是否参与交易?(例如,它会回滚吗?)
    2) 准备好的语句是否更新行
    3) 在捕获并处理异常后,您能保证数据库处于已知状态吗

    试图忽略例外是错误的做法。当前代码(如图所示)确实允许您在捕获异常后重复准备好的语句。”MySQLIntegrityConstraintViolationException告诉我数据库无法执行您要求它执行的操作;可能是重复的密钥或涉及所需外键的删除

    您需要了解数据库表的约束,才能真正知道应该如何响应此异常

    在插入重复项的情况下,我曾经遇到过这样的情况:我必须告诉db引擎忽略DUP,或者指示应该将DUP传输到一个表/文件

    这里最好的答案是理解你准备好的声明为什么抛出异常,然后计划如何应对这种情况。如果你已经知道这一点,请把它添加到问题中,否则我们将抓住救命稻草