`
amyer
  • 浏览: 40705 次
  • 性别: Icon_minigender_2
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

转抄:java运行时异常

阅读更多
Java提供了两类主要的异常:runtime exception和checked exception。checked 异常也就是我们经常遇到的IO异常,以及SQL异常都是这种异常。对于这种异常,JAVA编译器强制要求我们必需对出现的这些异常进行catch。所以,面对这种异常不管我们是否愿意,只能自己去写一大堆catch块去处理可能的异常。

   但是另外一种异常:runtime exception,也称运行时异常,我们可以不处理。当出现这样的异常时,总是由虚拟机接管。比如:我们从来没有人去处理过NullPointerException异常,它就是运行时异常,并且这种异常还是最常见的异常之一。

    以前一直没仔细想过出现运行时异常了系统会怎样工作,最近在一个模块排错时,才无意中发现了系统是如何处理运行时异常。出现运行时异常后,系统会把异常一直往上层抛,一直遇到处理代码。如果没有处理块,到最上层,如果是多线程就由Thread.run()抛出,如果是单线程就被main()抛出。抛出之后,如果是线程,这个线程也就退出了。如果是主程序抛出的异常,那么这整个程序也就退出了。运行时异常是Exception的子类,也有一般异常的特点,是可以被Catch块处理的。只不过往往我们不对他处理罢了。

    也就是说,你如果不对运行时异常进行处理,那么出现运行时异常之后,要么是线程中止,要么是主程序终止。如果程序的退出刚好是你期望的结果,那就万事OK了。

   但最近我在项目却遇的问题,恰恰是这因为没有对运行时异常进行处理,而导致程序在运行一小段时间后就当了。事情是这样的,由于写程序时我对多线程的并发处理不太会,也就把一个模块写成了单线程的,由它来循环处理一个数据队列。但没想到队列里面的数据有一些与预期的格式不一样,处理这样的数据时,程序就抛出了运行时异常。由于没有对异常进行处理,这个异常也就抛到了Thread.run()。最后这个处理线程肯定是被终止了,队列里面的数据也就不会再有程序去处理了。这个结果显然不是我想要的,队列里面出现异常数据了,正常的处理应该是把异常数据舍弃,然后记录日志。不应该由于异常数据而,影响下面对正常数据的处理啊。

    所以最后我在程序的循环处理模块,里面加了一个catch处理,来扑捉所有的异常,决不让这个处理线程退出,要知道我的所有数据还要依靠他来处理呢 (^_^ )。在这个场景这样处理可能是一个比较好的应用,但并不代表在所有的场景你都应该如此。如果在其它场景,遇到了一些错误,如果退出程序比较好,这时你就可以不太理会运行时异常,或者是通过对异常的处理显式的控制程序退出。

   知道了虚拟机怎么处理运行时异常,也更进一步理解了Sping对Hibernate的封装了。由于Hibernate是和数据库打交道,所以总是要抛出一些乱七八糟的checked异常,平时我们根本不想catch这些异常。因为这些异常总是把代码弄的乱乱的,搞的到处都是try{} catch(){}块,并且常常加了catch块,也并不能把程序从异常中恢复过来(异常处理的目标之一就是为了把程序从异常中恢复出来)。为了通过编译器的检查,程序员被迫加上了catch块,往往这些catch并没有发挥他应有的作用,反而带来了很大的不便。所以Spring对Hibernate封装时就把Hibernate的异常进行了封装,全部封装成运行时异常了。也就是Spring来扑捉Hibernate抛出的异常,然后Spring把异常转换成Spring自己定义的运行时异常再抛出。这样我们在编码时使用Spring来调用Hibernate时,可以不用catch块来处理一些不必要的异常。当然你确实要是想处理,也可以通过添加cathc块去处理异常。不过这个时候,你的Catch就要扑捉运行时异常了,而不是一般的checked异常了。 


Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1591436
分享到:
评论
2 楼 lliiqiang 2014-06-24  
系统自身也能处理这种异常.保证一定的健壮性,但是像虚拟机异常及没有办法了。我认为运行时异常本质特性应该是不需要throw关键字而是程序运行自身产生的异常.
1 楼 uqortbsa 2010-07-23  
感谢,这个很适合我,学习到了很多的知识
不过一般情况下对于runtime eception我们是不处理,在你这里我们看到了一些特别的东西,现在我还是看不懂,看来我还需要努力,珍惜从五点开始到十二点之间的宝贵时间来学习,超越一切人

相关推荐

    Java智能卡(转抄)

    Java智能卡是一种特殊的卡片,它结合了计算能力与数据存储功能,常用于安全敏感的领域,如金融、电信和交通。这种卡片的主体是一个嵌入在塑料卡片内的微芯片,通过读卡器设备与外部系统进行交互。智能卡的广泛应用...

    处方、医嘱用药执行制度处方和医嘱在转抄和执行中的审核程序.doc

    《处方和用药医嘱在转抄和执行中的核对程序》是医疗机构中一项重要的管理制度,旨在保障医疗质量和患者安全。该程序主要针对临床医务人员在下达和执行医嘱时的行为规范,确保每一项医疗活动的准确性。 1. 目的: -...

    医嘱转抄和执行核对程序.doc

    医嘱转抄和执行核对程序.doc

    小学五年级数学分数试题与答案-转抄-供分享6页.pdf

    小学五年级数学分数试题与答案-转抄-供分享6页.pdf

    javascript轮播图实现(转抄于网络)

    JavaScript轮播图是一种常见的网页动态效果,用于展示一组图片或内容,通过自动切换或用户交互来呈现连续播放的效果。在Web开发中,它通常被用于网站的首页或产品展示区域,以吸引用户的注意力并提供良好的用户体验...

    发热门诊第二季度业务知识考试含答案.docx

    12. **转抄医嘱注意事项**:转抄医嘱时应写明日期、时间,由两人核对并签名,不能仅由转抄者一人签名。 13. **护士与发血者交接**:护士与发血者交接时需核对交叉配血报告单、血袋标签以及血液质量,不包括生化单...

    运行病历检查标准.pdf

    运行病历检查标准是医疗行业中确保医疗服务质量和患者安全的重要环节,它涵盖了病历书写的各种细节,旨在保证病历的完整性和准确性。以下是该标准中涉及的关键知识点: **入院记录**: 1. 入院记录应在患者入院后24...

    办公班护士岗位职责.doc

    办公班护士在医院的日常运营中扮演着至关重要的角色,主要负责维护病区的正常运行,确保医疗服务的高效和准确。以下是办公班护士的主要职责: 1. **交接班与信息确认**:参加晨会和床头交接班,了解病区的整体状况...

    中医科工作制度(新).pdf

    7. 处方管理:医师未亲自诊疗患者,不得开具处方或转抄他人的处方。 8. 教学任务:承担中医和西医的教学任务,指导实习生和进修医生的学习。 9. 土单验方收集:积极搜集民间的中药偏方,经过筛选和验证,推广有效...

    新生儿科工作制度(护理).docx

    - **转抄核对**:转抄医嘱时必须标明日期、时间,并由转抄者和核对者签字确认。 - **临时医嘱查对**:对于临时医嘱,同样需要第二人查对确认。 - **口头医嘱处理**:在紧急情况下,医师可以下达口头医嘱,但执行者需...

    护理_核心制度内容.doc

    转抄医嘱时应注明日期、时间并签名,两人核对后执行。口头医嘱在抢救中应用,需重复并记录,事后补写并签名。有疑问的医嘱应先确认再执行。 - **服药、注射、输液查对制度**:执行“三查七对”原则,即摆药、操作...

    查对制度试题题库汇编.doc

    7. **医嘱查对制度**:医嘱必须班班查对,每日总查对,转抄医嘱需注明日期、时间和签名,临时医嘱需两人核对,口头医嘱在执行后补开并再次核对。对于疑问医嘱,需核查清楚后执行。 8. **药物配置**:配置药物前要...

    中医科工作制度、岗位职责及诊疗规范.doc

    中医科工作制度是医院中医部门运行的基础规范,旨在保障医疗服务的质量和安全。主要包括以下几点: 1. 遵守医院规章制度:中医科医护人员必须严格遵守医院的各项规定,确保医疗服务的合规性。 2. 提高中医诊疗水平...

    护理质量检查标准.doc

    5. 输液卡查对:输液卡转抄后查对并签字。 十二、发药制度(共10分) 1. 床边发药:护士直接向病人发放药品并告知用法。 2. 双人查对:发药前执行双人查对,确保用药安全。 以上标准涵盖了护理工作中从患者管理、...

    胃肠减压操作流程图.doc

    2. **医嘱转抄与核对**:接收医生的医嘱,双人核对以确保无误。 3. **病人评估**:检查病人口鼻腔和口腔状况,了解病人需求,并解释操作过程,获取合作。 4. **环境与禁忌症评估**:确认病室环境适宜,评估病人是否...

    外科日常入院工作流程范本.doc

    - **信息转抄**:主班护士负责在电脑系统中完成转床操作,更新相关记录,并确保治疗单的正确实施。 - **交班规范**:交班时使用普通话,清晰地报告患者情况,特别是病情变化和夜间状况。 6. **床边交班流程**: ...

    科室核心制度理论考试(查对制度).docx

    处理医嘱者每天需检查医嘱执行情况,特殊情况转抄医嘱时,转抄者和查对者均需签名确认。 6. **口头医嘱处理**:在抢救患者时,口头医嘱需要由执行者大声复述并得到医生确认后执行。手术室与病区交接患者时,由责任...

    给药错误的原因鱼骨图分析及整改措施.pdf

    例如,在本案例中,责任护士在转抄医嘱时错误地更改了患者名字。 4. **制度执行**:查对制度、交接班制度等核心护理制度的执行不力,导致错误的发生。 5. **药品管理**:药品的存储、标识不清、类似药名混淆、效期...

Global site tag (gtag.js) - Google Analytics