上一个帖子讨论了“编程习惯的问题
”,今天来聊聊关于异常处理的话题。<!-- program-think-->
★空catch语句块
犯这种错误的人比较少,一般发生在刚学会Java或者刚参加工作不久的人身上。
所谓"空catch语句块"就是在catch语句块中没有对异常作任何log处理,导致异常信息被丢弃掉。一旦程序不能正确运行,由于查不到任何log信息,只好从头看代码,靠肉眼找bug。
★没有使用finally
很多人在catch语句之后不使用finally语句。由于在try语句中可能会涉及资源的申请和释放。如果在资源申请之后、资源释放之前抛出异常,就会发生资源泄露(资源泄露的严重性,上一个帖子
已经聊过了)。
★笼统的catch语句块
有些人为了省事,只在自己模块的最外层代码包一个try语句块,然后catch(Exception)。不管捕获到什么异常,都作统一log了事。这
种做法比“空catch语句块”稍好,但由于不能对具体的异常进行具体处理,对一些可恢复的异常(下面会提到),丧失了恢复的机会。而且也可能导致上述提
到的资源泄露的问题。
★使用函数返回值进行错误处理
有些人放着Java的异常机制不用,而用函数返回值来表示成功/失败(比如返回true表示成功、返回false表示失败),简直是“捧着金碗要饭”。个人感觉,从C转到Java的人比较容易有此毛病。这种做法会导致如下几个问题:
返回值一般用整数值或布尔值表示,传递的信息过于简陋;
一旦调用者忽略了错误返回码,就会导致和“空catch语句块”类似的问题;
对同一个函数的多处调用,都需要对返回值进行重复判断,导致代码冗余(代码冗余的坏处,上一个帖子
也已经聊过了)。
★不清楚Checked Exception和Runtime Exception的区别
这个现象比较普遍,我发现很多2年以上Java工作经验的人尚未完全搞明白两者的区别。看来这个问题得详细说一下。
当初Java的设计者有意区分这两种异常,是别有深意的。其中“Checked Exception”用于表示可恢复的异常(也就是你必须检查的异常);而“Runtime Exception”表示不可恢复的异常(也就是运行时异常,主要是程序bug和致命错误,你不需要
检查)。不过这种做法引来了很多争议(包括很多Java大牛),鉴于本帖子主要针对新手,以后再专门来聊这个争议的话题。
为了便于理解,下面我举一个例子来说明。假设你要写一个Download函数,根据传入的URL(String参数)返回对应网页的内容文本。这时候有两种情况你需要处理:
1、如果传入的URL参数是null,这表明该函数的调用者出bug了,而程序本身的bug是很难在运行时自我恢复的。这时候Download函数必须抛出Runtime Exception。并且Download函数的调用者不应该
尝试去处理这个异常,必须让它尽早
暴露出来(比如让JVM自己终止运行)。
2、如果传入的URL参数非null,但是它包含的字符串不是一个合法的URL格式(可能由于用户输入错误导致)。这时候Download函数必须抛出
Checked Exception。并且Download函数的调用者必须捕获该异常并进行相应的处理(比如提示用户重新输入URL)。
上面就是几种常见的Java异常处理的误用。下一个帖子我们来聊一下“对虚拟机(JVM)了解不足
”。
http://program-think.blogspot.com/2009/02/defect-of-java-beginner-4-exception.html
分享到:
相关推荐
本文将探讨Java新手在学习过程中普遍存在的通病,并提出相应的解决策略。 首先,我们来看第一个通病:对算法和数据结构的不熟悉。算法和数据结构是编程的基础,无论使用哪种语言,它们都是解决问题的关键。许多Java...
【沥青路面4大常见质量通病防治方法】 沥青路面的质量直接影响到道路的使用寿命和行车安全。常见的四大质量通病包括:路面平整度差、路面波浪、路面接茬不平、松散、路面有轮迹以及路面壅包、搓板。针对这些问题,...
4. 脱模剂使用不当:保持脱模剂涂抹均匀,清除多余脱模剂,防止模板表面残留痕迹。 5. 清理不彻底:模板在使用前后必须清洁,尤其是墙柱根部和梁柱接头,避免杂物影响混凝土质量。 6. 封闭模板无排气孔:墙体预留...
4. **移门内部处理不当**: - 通病:移门内侧和轨道附近的基层可见,影响美观。 - 原因:深化设计不周全。 - 解决措施:考虑暗藏式轨道处理,用门套材料做饰面延伸,内部封闭处理。 5. **木门扇与门套搭接不足**...
9. 铝塑复合管应用:不当使用可能导致材料性能下降,应根据设计要求和环境条件合理选择材料。 10. 挂表高度和位置:燃气表的安装高度、位置需准确,以方便读取和维修,同时减少安全隐患。 11. 管道套管封堵:套管...
4. 外墙质量通病:防治渗漏和脱落,应注重防水层的施工,选择合适的外墙材料,确保连接部位的密封处理。 5. 门窗质量通病:预防渗漏和变形,门窗框与墙体间的密封处理至关重要,同时需确保门窗本身的制作质量和安装...
- 脱模剂使用不当、模板内未清理干净:脱模剂选择和使用要合理,模板使用后应及时清理,以保证混凝土表面质量。 - 各类型模板(如梁、柱、墙、板)的缺陷防治,需要根据模板的特性进行专门处理。 3. 钢筋工程质量...
原因:基层处理不当、砂浆粘结力不足、气候变化和水分渗透。 防治:确保基层平整垂直,选用合适砂浆,保证粘贴饱满但不过多,施工时需谨慎避免敲击导致空鼓。 2. 分格不匀、墙面不平整 原因:施工前未精确排砖分格...
装饰装修工程质量通病主要涉及吊顶、石膏板吊顶和石材饰面三个方面,这些问题如果处理不当,会影响装修的整体效果和耐用性。以下是对这些通病的详细分析及防治措施: A、吊顶龙骨的质量通病及防治措施: 1)通病:...
文档“砼常见通病预防措施及处理方法.doc”主要探讨了在钢筋混凝土施工过程中常见的质量问题及其预防和解决方法。混凝土质量通病不仅影响结构的安全性和耐久性,还可能导致工程成本增加和进度延误。以下是对这些通病...
- 原因:基层处理不当,砂浆粘结强度不足,以及环境因素如温度变化和水分渗透。 - 防治:确保墙体平整垂直,选用合适的砂浆并保证贴砖时的饱满度,同时要注意不要过度敲击导致面砖底部空鼓。 2. 分格不匀、墙面不...
综上所述,显示器的通病涉及硬件、软件和使用环境等多个方面。用户在遇到问题时,首先应排查基础设置和连接问题,再根据具体情况采取相应措施。对于复杂问题,及时寻求专业技术人员的帮助,以保证显示器的正常运行和...
4. **移门内部及轨道附近未处理** - 通病:移门内部和轨道附近的基层材料可见,影响美观。 - 解决办法:深化设计时考虑暗藏式轨道和侧面处理,用饰面材料覆盖,内部封闭处理。 5. **门扇与门套搭接不足** - 通病...
综合管廊作为城市基础设施的重要组成部分,其建设质量直接关系到城市的正常运行和安全。本文针对综合管廊在建设过程中可能出现的质量...通过这些防治措施,可以显著降低质量通病的发生,提高工程的整体质量和使用寿命。
1. 基底处理不当:基底表面不平、潮湿、不干净或者存在裂缝等,都会直接影响墙纸的贴合效果和使用寿命。预防措施包括彻底清洁墙面,修补裂缝和坑洼,确保墙面干燥,并使用适当的底漆对墙底进行处理。 2. 粘合剂选择...
- 原因4:使用和维护管理不善,如透气管损坏、雨水管堵塞。防治方案是加强管理和维护,确保设施完好,防止积水倒灌。 2. 厨房、卫生间渗漏防治: - 原因1:管道接口不密实。防治方法是完成管道安装后进行打压或...
《质量通病及防治(防水工程分册)》是一份由十九冶集团有限公司编制的专业文档,专注于生活配套区上河苑二期人才房项目的防水工程质量控制。文档内容详细列举了防水工程中可能出现的质量问题及其防治策略,旨在提升...
### 笔记本维修通病收集 #### 一、引言 笔记本电脑因其便携性和高性能而受到广大用户的喜爱,但随着使用时间的增长和技术更新换代,笔记本在使用过程中难免会出现各种故障。本文将根据作者多年积累的经验,总结并...
《消防工程施工质量通病及其防治》 消防工程是建筑物安全体系的重要组成部分,其施工质量直接影响到建筑的安全性和人员的生命财产安全。本课件主要针对消防工程中的常见问题,包括火灾报警系统和消火栓及喷淋系统,...