BATCH

estoy intentando subir un excel de 500 registros
este el codigo del la insercion, el trabaja bien el laninea 151 hay un registro con error asi que el termina su ejecucion y me quedan insertados 150 registros, lo que yo quiero lograr es que me siga insertando todo lo que puede insertar, y al final mandar un mensaje sobre los registros que no se pudieron insertar, como ven quiero hacer esto con batch pero no se como acomodarlo.

 public boolean subeDatos(DataBase db, List<DatosDTO> listaDatos) throws SQLException
    {
        boolean ok=false;
        final Integer batchSize = 1000;
        List<DatosDTO> fallidos = new ArrayList<DatosDTO>();
        DatosDTO[] batch = new DatosDTO[ listaDatos.size() ];
       
        Integer count = 0;
        Connection conn = null;
        PreparedStatement ps = null;
        try
        {  
              conn = db.getConnection();
              conn.setAutoCommit(false);
              ps = conn.prepareStatement("INSERT INTO tabla(CODVENTA,FECHA,MES,NOMBRE)"
                + " VALUES(?,sysdate,?,?)");
       
              for (DatosDTO arr: listaDatos)
              {      
                     
                      ps.clearParameters();
                      batch[count] = arr;
                      ps.setString(1, arr.getCodPuntoVenta());
                      ps.setString(2, "9");
                      ps.setString(3, arr.getCedula());
                 
                      ps.setString(4, arr.getNombreArrendador());
                   
                   
                      ps.addBatch();
                     
                       if (++count % batchSize==0 || count == listaDatos.size() )
                      {
                         
                       
                           int [] r = ps.executeBatch();
                         
                          // ps.executeBatch();
                           ps.clearBatch();
                         
                           
                           
                         
                       }
                 
                      count++;
              }
            conn.commit();  
             
        }
         catch(BatchUpdateException ex)
        {
               int [] r = ps.executeBatch();
         
     
        }
        catch(SQLException e)
        {
              System.out.println("");
       
        }
       
       
     
        finally{
       
          DataBase.closePS(ps);
          DataBase.closeCO(conn);
        }
       
        return ok;
    }