先来概念:
Exception异常分为:RuntimeException(运行时异常,也叫未检查异常或不受检查异常)和已检查异常(或受检查异常):
已检查异常 是指程序员已经足够小心的检查了他的代码,但是还是不能保证代码不出现异常;如,程序要访问某个文件,但访问时文件不存在,这和程序本身没有太大关系;再如,程序要进行网络连接,但执行时没有连接网线,这些问题都是已检查异常。
未检查异常 一般是由程序员没有细心检查代码,而导致的如空指针异常、数组越界、类型转换异常等都是由于程序员粗心大意造成的。这些异常是在编码过程中是能够避免的。
看到此你需要思考:我们需要处理的到底是已检查异常还是未检查异常?如一幢大楼运行过程中被雷击中,这肯定是已检查异常,但运行过程中发现有个地方四周没有窗户和门,这就是未检查异常,那到底我们需要针对哪个异常进行应急预案呢?当验收大楼时肯定政府部门要检查你的抗震级别,消防措施等,这些措施是你在修建时必须考虑,而且要求是强制执行的,那么这个要求就是必须处理的,如果不处理则编译通不过。如果出现未检查异常,那就只能加门或窗户,即修改代码了。
从另外一个角度来讲,已检查异常(受检查异常)就是受编译器检查的异常。
区别:
1)运行时异常,属于RuntimeException类及子类范围的类(以及衍生类)都属于运行时异常。
2)受检查异常,在Exception范围内,除了运行时异常的类都是受检查异常类,为checked exception
3)它们之间的区别在于: 例如在代码中写了 throw new Exception(); 和 throw new RuntimeException();
两者都会在运行期间抛出异常!
但是在编译阶段前者属于抛出一个受检查异常,要求对它进行显式的try..catch 捕获处理或者向上一层方法抛出,否则在编译期间就显示错误!
后者抛出是运行时异常,在编译阶段不予检查,语法上不会显示任何错误(throws处没声明不会出错,但最好声明)!
所以简单的通过throw手动抛出受检查异常 和抛出运行时异常,前者要求显式处理,后者不要求作出处理。
我以为的设计原则:
受检查异常如FileNotFoundException,编译时期受检查,提醒用户try{}catch{}或者throw到上一层,当然你可以一直throw直至抛给虚拟机,然而这并不是好的方式,因为对于这个异常,我们是可以进行一些处理,挽救的,比如我们可以在捕获到异常的时候,提醒用户"找不到文件",用户就可以根据这个信息,把相应文件放到指定位置,从而解决问题,并不需要终止程序,或者修改代码。
而对于非受检查异常如ArrayIndexOutOfBoundsException(数组越界异常),编译时期不提供错误检查,我想是因为,针对这个错误,用户是无能为力的,同样程序员也是部分无能为力的,你不可能通过try{}catch{}去捕获这个异常之后,再去增加数组容量。这时你所能做的,只能是去修改代码,如修改数组容量,或换个自增的数据结构。这种运行时错误,只能通过在编译阶段,依靠程序员的小心谨慎来避免。
http://hi.baidu.com/changliwang/blog/item/2f962fcf7580635a0fb345e7.html
分享到:
相关推荐
主要介绍了Java编程中的未检查型异常与非检查型异常,以及异常的处理方式,需要的朋友可以参考下
可配置化shell脚本健康检查tomcat,如果tomcat运行异常会及时发送邮件通知单个或多个管理员
深入理解java异常(异常中的Error+异常中的Exception+检查异常+运行时异常+异常处理+throws关键字等)
BOM异常检查工具
宫颈癌检查异常转诊工作制度.doc
本研究旨在比较经阴道超声检查与宫腔镜检查对子宫异常出血患者子宫异常的诊断价值。 方法:回顾性观察横断面研究,对250例子宫异常出血的女性进行研究。 纳入符合选择标准并经阴道超声(TVS)和宫腔镜检查的患者。 ...
检查人 检查时间 序号 检查内容 检查结果 处理情况及整改要求 备注 1 安全技术措施的有效性 符合 不符合 2 安全配置 符合 不符合 3 安全管理制度的执行情况 符合 不符合 4 服务器运行情况 正常 异常 5 应用系统运行...
Checked Exception(受检的异常)2---马克-to-win java视频
易飞ERP系统BOM异常检查程序,很实用,方便维护及异常处理
Java中的异常分为三种类型:检查型异常(Checked Exception)、非检查型异常(Unchecked Exception)和错误(Error)。 检查型异常(Checked Exception): 这些异常在代码中必须进行显式处理,否则编译器会报错。 ...
异常红细胞检查显微镜检查法作业指导书.pdf
Java 中的检查型异常和非检查型异常有什么区别? Java 中的 NullPointerException 和 ArrayIndexOutOfBoundException 之间有什么相同之处? 在 Java 异常处理的过程中,你遵循的那些最好的实践是什么? 既然我们...
监控系统录像监控系统录像检查表( 选),,,,,,,,,,,,, 42826,"检测 项目",监控主机是否运行正常,图像是否清晰,网络是否通畅,监控录像回放查询,监控硬盘坏道检查,设备温度是否正常,检修人,备注,,,, ,, 正常 异常 待...
背景:众所周知,某些实验室值异常可能会增加具有特定危险因素和特定程序的患者人群的死亡率。... 结论:进行非常规实验室检查与肌钙蛋白组死亡率的统计学显着增加有关,而与TSH,肌酸激酶或Hb A1c组无关
异常检测常用方法介绍,全面!异常检测常用方法介绍,全面!异常检测常用方法介绍,全面!异常检测常用方法介绍,全面!
Java中的异常分为已检查异常(checked exception)和未检查异常(unchecked exception)。已检查异常需要在方法签名中声明或者通过try-catch块进行捕获和处理,否则编译器会报错。未检查异常通常是RuntimeException...
可配置化shell脚本检查nginx健康,如果nginx运行异常会及时发送邮件通知单个或多个管理员。。。
逐一检查各服务器"故障面板"是否有异常? 是( ) 否( ) 备注: 2.是否有其他异常情况? 是( ) 否( ) 备注: 服务器系统检查 1. 系统负载状态 文件服务器: CPU使用率 ,内存使用率 。 偏高备注: 网站服务器: CPU...
根据等高线检查高程点的合理性,可自动标记和选中不合理的高程点,然后e命令直接删除即可,lisp插件,支持所有版本。
oRuntimeException:运行时异常,也叫非检查异常(NullPointerException、ArrayIndexOutOfBoundsException、ClassCastException、ArithmeticException),会由Java虚拟机自动抛出并自动捕获,此类异常的出现绝大数...