先来概念:
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编程中的检查型异常与非检查型异常分析 Java编程中,检查型异常(Checked Exception)和非检查型异常(Unchecked Exception)是两种不同的异常类型,对于程序员来说,了解它们的区别和使用场景至关重要。本文将...
- 非受检查异常(运行时异常) + NullPointExecrption + NumberFormatException + ArrayIndexOutOfBoundsException + ... Java 异常机制是一种强大的错误处理机制,帮助开发者捕获和处理程序运行时的...
本压缩包提供的"tomcat健康检查脚本文件异常发送邮件通知.rar"就是为了解决这个问题,它包含了一个可配置化的Shell脚本,能够定期检查Tomcat的状态,并在检测到异常时自动发送邮件通知给管理员。 首先,我们来详细...
《宫颈癌检查异常转诊工作制度》是针对宫颈癌筛查过程中发现异常情况的规范化处理流程,旨在确保患者能够及时接受进一步诊断和治疗。这一制度在乡级层面实施,旨在提高宫颈癌的早诊早治率,减少漏诊,降低疾病对女性...
BOM异常检查工具是专门针对这一问题设计的,旨在确保文件的正确编码,防止由于BOM问题导致的乱码或程序运行错误。下面将详细阐述BOM异常检查的相关知识点。 首先,理解BOM的含义至关重要。BOM在Unicode编码中,如...
非捕获异常,也称为未检查异常(Uncatched Exceptions),通常是指在程序执行过程中,没有被try-catch语句块捕获的异常。这些异常如果未经处理,会导致应用程序突然崩溃,给用户带来不愉快的体验。本篇将详细讲解...
# 对每个列检查异常值 for column in columns: current_data = data[data['orderdate'] == some_date][column] # 如果当前数据点超出上下限,则标记为异常 is_outlier = (current_data ['DAWN']) | (current_data...
Java异常体系结构主要分为两大类:检查型异常(Checked Exceptions)和非检查型异常(Unchecked Exceptions)。 #### 检查型异常 这类异常是指编译器要求必须处理的异常。如果一个方法声明抛出此类异常,那么调用...
7. **权限与安全**:确保脚本有正确的执行权限,并且在处理敏感信息(如邮件凭据)时遵循安全最佳实践,比如使用环境变量存储密码,而非直接写入脚本。 8. **日志记录**:脚本执行过程中的信息(如检查结果、发送...
其中异常类 Exception 又分为运行时异常(RuntimeException)和非运行时异常,这两种异常有很大的区别,也称之为不检查异常(Unchecked Exception)和检查异常(Checked Exception)。 二、异常的捕获和处理 Java ...
异常又进一步分为不受检查异常(如`RuntimeException`及其子类)和受检查异常,不受检查异常在编译时不强制处理,而受检查异常(除了`RuntimeException`及其子类之外的`Exception`)必须被处理。 Java的异常处理...
本研究旨在比较经阴道超声检查与宫腔镜检查对子宫异常出血患者子宫异常的诊断价值。 方法:回顾性观察横断面研究,对250例子宫异常出血的女性进行研究。 纳入符合选择标准并经阴道超声(TVS)和宫腔镜检查的患者。 ...
2. 异常事件提报与调查管理:各部门发现异常事件需立即报告直接上级和绩效管理中心,填写提报表,绩效管理中心决定是否进行调查,调查结果需提交处理意见,责任部门需制定纠正预防措施。 **四、奖惩机制** 对于异常...
不受检查异常(通常是继承自RuntimeException的类)通常与编程错误有关,例如空指针异常(NullPointerException)和算术异常(ArithmeticException),它们可以在运行时自然抛出,不一定需要在方法签名中声明。...
常见的Python异常包括IndexError(索引超出范围)、TypeError(操作符或函数应用于不兼容的类型)、KeyError(访问字典中不存在的键)、ValueError(值错误,如将非数字字符串转换为整数)、NameError(使用了未定义...
7. **检查异常和非检查异常**:检查异常是那些在编译时必须被捕获或声明的异常(如IOException),而非检查异常(如NullPointerException)则在运行时抛出,不需要强制捕获。 8. **异常链**:当一个异常在处理另一...
异常分为检查型异常(Checked Exceptions)和非检查型异常(Unchecked Exceptions),前者是程序可以预见并应该处理的异常,后者是程序难以预见,通常与编程错误相关的异常。 2. **异常分类** - **检查型异常**:...
- `MyException` 继承自 `Exception`,表示这是一个检查型异常,必须被捕获或声明抛出。 - 提供了一个带字符串参数的构造方法,用于存储异常的具体信息。 - `getContent()` 方法返回异常信息。 2. **异常处理...
检查会关注购进固定资产的抵扣情况,以及用于非应税项目、免税项目、福利和个人消费的购进货物处理,还会检查是否存在虚开专用发票的情况。 这些财务指标异常是税务机关监控的重点,企业应确保财务报表的真实性,...