List 在迭代时可能抛出的异常
今天在做小练习时遇到有关List在迭代时的一些小问题.写出与大家一起共享下吧..呵呵...
===================代码============================
public List getFavoriteBytag(String tagString) {
Session session = HibernateSessionFactory.getSession();
List list = null;
// List resultList = null;
String hqlString = "from Favorite";
String[] tagStrings = null;
Favorite favorite = null;
try {
list = commomDao.getList(hqlString);
Iterator iterator = list.iterator();
// resultList = new ArrayList();
while (iterator.hasNext()) {
favorite = (Favorite) iterator.next();
/*
* System.out.println(favorite.getFTags()); System.out.println("<br>");
*/
tagStrings = favorite.getFTags().split(",");
for (int i = 0; i < tagStrings.length; i++) {
System.out.println(tagStrings
+ "===========================\n");
if (tagString.equals(tagStrings)) {
// resultList.add(favorite);
list.add(favorite);
System.out.println("haaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
System.out.println("------------" + tagStrings
+ "--------------------");
}
}
}
} catch (RuntimeException e) {
System.out
.println("FavoriteSerachBizImpl.getFavoriteBytag()方法有错误!!!");
e.printStackTrace();
throw e;
} finally {
session.close();
}
// return resultList;
return list;
}
先描述一下问题吧..
首先我把表favorite表中的所有数据全部查出放在了List集合中,然后调用List的iterator()方法把得到的结果又放到了Iterator集合中(为了好遍历呐.)当我遍历某一行时我把当前行的某列(String类型)通过String的split(",")把得到的这一列通","拆分成一个String的数组.在后我在遍历这个数组.如果这个数组中有与我传进来的参数(tagString)相同的话,我就把该行放到List集合中呐.由于我前后用的是同一个List,即(list)所以在运行该程序时抛出了java.util.ConcurrentModificationException这么个异常
...诶...惭愧呐...呵呵...
public class ConcurrentModificationExceptionextends RuntimeException当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常。
例如,某个线程在 Collection 上进行迭代时,通常不允许另一个线性修改该 Collection。通常在这些情况下,迭代的结果是不确定的。如果检测到这种行为,一些迭代器实现(包括 JRE 提供的所有通用 collection 实现)可能选择抛出此异常。执行该操作的迭代器称为快速失败 迭代器,因为迭代器很快就完全失败,而不会冒着在将来某个时间任意发生不确定行为的风险。
注意,此异常不会始终指出对象已经由不同 线程并发修改。如果单线程发出违反对象协定的方法调用序列,则该对象可能抛出此异常。例如,如果线程使用快速失败迭代器在 collection 上迭代时直接修改该 collection,则迭代器将抛出此异常。
注意,迭代器的快速失败行为无法得到保证,因为一般来说,不可能对是否出现不同步并发修改做出任何硬性保证。快速失败操作会尽最大努力抛出 ConcurrentModificationException。因此,为提高此类操作的正确性而编写一个依赖于此异常的程序是错误的做法,正确做法是:ConcurrentModificationException 应该仅用于检测 bug。
List 在迭代时可能抛出的异常相关推荐
- 自定义例外:当没有查询到员工信息时,抛出例外
/* 自定义例外:当没有查询到员工信息时,抛出例外 */ set serveroutput on declare cursor c1(dno number) is select empno fr ...
- java sleep 抛出异常_PowerMockito模拟Thread.sleep()时抛出中断异常的场景
点击蓝色字免费订阅,每天收到这样的好信息 前言:最近有不少粉丝关注本公众号.并且我已经成功开通了流量主同时会赚一点点广告费,我打算每个月把这部分钱拿出来给大家买点书刊,算是给大家一点福利吧.大家想买什 ...
- 第8集析构函数中抛出的异常
前两篇文章讨论了对象在构造过程中(构造函数)和运行过程中(成员函数)出现异常时的处理情况,本文将讨论最后一种情况,当异常发生在对象的析构销毁过程中时,又会有什么不同呢?主人公阿愚在此可以非常有把握地告 ...
- 第7集 构造函数中抛出的异常
上一篇文章简单讨论了一下对象的成员函数抛出异常时的处理情况.本文中将继续讨论当在构造函数中抛出异常时,程序的执行情况又如何?这有点复杂呀!而且主人公阿愚还觉得这蛮有点意思! 构造函数中抛出的异常 1. ...
- Spring-AOP @AspectJ进阶之绑定抛出的异常
文章目录 概述 实例 总结 概述 和通过切点函数绑定连接点信息不同,连接点抛出的异常必须使用AfterThrowing注解的throwing成员进行绑定 实例 代码已托管到Github-> ht ...
- 用户自定义一个异常,编程创建并抛出某个异常类的实例。运行该程序并观察执行结果。
用户自定义一个异常,编程创建并抛出某个异常类的实例.运行该程序并观察执行结果. 例:用户密码的合法化验证. 要求密码有4-6个数字组成.若长度不落在这个范围或不是有数字组成.抛出自己的异常. 要求: ...
- controller的异常处理以及service层的事务控制___controller层 trycatch不影响service层抛出的异常
controller的异常处理以及service层的事务控制 最近写代码涉及到一些事务,上午终于把代码给理顺了,之前不太清楚在哪里做异常处理,导致代码遍地try-catch,相当难看. 还是基于con ...
- 说说如何抛出Java异常
以下是本人的一些分享,我热爱编程,希望能多交编程的爱好者,如果你也是其中一名,那么请加好友,大家关注一下,下面的文章是自己觉得一些有用的东西,留下来给自己当笔记,当然也希望能帮助到你,首先感谢你的阅读 ...
- 应该手动抛出什么异常?RuntimeException?
Java程序员应该手动抛出什么异常?不能抛出RuntimeException吧? 收藏帖子 回复 秦三行 结帖率 96.88% if(sectionCodeT!=null && !&q ...
最新文章
- MyBatis学习总结(1)——MyBatis快速入门
- 机架搭建_铝型材设备机架定制流程
- Lintcode 167. 链表求和 221. 链表求和 II 题解
- 字节跳动ClickHouse在用户增长分析场景的应用
- ML之XGBoost:XGBoost参数调优的优秀外文翻译—《XGBoost中的参数调优完整指南(带python中的代码)》(四)
- linux neo4j 服务器,如何在linux服务器上配置Neo4j · Digital World
- 重磅!阿里云发布业界首款SaaS化防火墙
- android不是内部或外部命令,也不是可执行的程序或批处理文件
- html点击计数器的实现,点击计数器_Servlet 教程_w3cschool
- 2019有的图纸打印出来看不清楚_CAD图纸打印出来后很多CAD文字消失了怎么办?...
- Spring Boot Serverless 实战系列“架构篇”首发 | 光速入门函数计算
- c 不安装oracle,安装oracle 10g 的艰难之旅
- mysql中的on的执行顺序_MySQL -- join , on , where 的执行顺序
- 关于空间计量模型中自回归系数大于1的解释
- SGD ,Adam,momentum等优化算法比较
- 内地酒量排行榜山东居首 东北三省无一进前三
- turtle库使用——漫天繁星+万花筒绘制
- 【MATLAB教程案例53】CNN卷积神经网络的MATLAB编程学习和实现,以手势识别为例进行仿真分析
- K8s基础知识学习笔记及部分源码剖析
- 第七章 1什么是活动目录?活动目录有那些优点?