快速业务通道

java的异常和断言学习笔记 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14

java的异常和断言学习笔记

时间:2011-10-16 cn-java

异常

在java中,一个异常对象总是Throwable子类的实例。

Error类体系描述了Java运行系统中的内部错误以及资源耗尽的情况。

由编程导致的错误,会导致RuntimeException异常。而其他错误原因导致的异常----例如,因为I/O错 误导致的曾经运行正确的程序出错,都不会导致RuntimeException异常。

从RuntimeException衍生出来的异常包括下面的问题:1〉错误的类型转换;2〉数组越界访问;3〉试 图访问一个空指针。

不是从RuntimeException衍生出来的异常包括:

1〉试图从文件尾后面读取数据;

2〉试图打开一个错误格式的URL;

3〉试图用一个字符串来构造一个Class对象,而当该字符串对应的类并不存在;

处理RuntimeException的原则是:如果出现RuntimeException,则一定是你的错误;

不同的浏览器可以处理不同类型的URL,所以,URL格式是否错误依赖于具体的环境,而不仅仅是程序 代码;

Java语言规范中将任何Error的子类以及RuntimeException的子类都称为未检查异常,而其他的异常则 称为已检查异常;

仅仅在以下4种情况下,才会抛出异常:

1〉调用了一个会抛出"已检查异常"的方法,例如BufferReader类的readLine方法;

2〉程序运行过程中发生了错误,并且用throw语句抛出一个"已检查异常";

3〉程序错误,例如a[-1]=0会抛出一个"未检查异常"如数组下标越界(ArrayIndex-- OutOfBoundsException);

4〉Java虚拟机或者是运行时库出现了内部错误;

不需要声明java的内部错误。一个方法必须声明它可能抛出的全部"已检查异常"。如果在自己的子类 中覆盖了一个来自父类的方法。特别需要注意的是,如果父类方法根本没有抛出任何"已检查异常",则子 类也只能如此;

在Java中,没有throws指示符的方法是不能抛出任何已检查异常的;

对于try/catch代码块,如果方法内的任何代码抛出了一个异常,同时它的类型没有在catch中指定, 则方法会立即退出;

应捕捉并且处理那些已知如何处理的异常(用catch),而传递那些不知如何处理的异常(用 throws);

对于try/catch/finally代码块,无论是否捕获异常,都会执行finally从句中的代码;

虽然Java程序员必须在finally从句中人工设置代码来回收资源,但由于Java内建有"垃圾收集"机制, 所以只有极少数的资源才要求人工进行回收;

actionPerformed方法不能抛出任何已检查异常;

java的异常和断言学习笔记(2)

时间:2011-10-16 cn-java

使用异常机制的一些技巧:

1〉异常控制不能代替简单的测试,和执行简单的测试相比,捕捉异常所需的时间大大超过前者,所以 ,只有在异常情况下才使用异常;

2〉不要过分细化异常;

3〉不要压制异常:可以使用如下格式: try { //代码 } catch (Exception e) { //空 }

4〉不要羞于传递异常:对于某些异常(如调用FileInputStream构造器或者readLine方法产生的异常) ,传递它比捕捉它更好。让高层的方法来通知用户发生了错误或者放弃执行不成功的命令更合适。

断言

默认情况下,断言是关闭的。可通过-ea来打开,用-da来关闭。选项-ea:...会打开默认包中全部类的 断言功能,打开或者关闭断言是类装载器的功能;

-da和-ea选项对那些没有类加载器的"系统类"是不起作用的。对于这些系统类,要使用- enablesystemassertions/-esa选项来打开断言功能;

断言使用技巧:

1>断言失败是致命的,不可恢复的错误;

2>断言检查仅仅用在程序开发和测试阶段;

因此,不应该用断言作为信号来通知程序的另外部分发生了可恢复错误,或者将断言作为通知程序使 用者的方式。断言仅仅应该在测试阶段用来定位程序内部错误;

断言是在测试和调试阶段使用的工具,而日志是在程序整个生命周期中都使用的策略性工具。

http://blog.chinaunix.net/u1/41559/showart_637995.html

//这文章不错,可以学习一下

下面是think in java中的一段

-----------------------------------------------------------------------------------

java的异常和断言学习笔记(3)

时间:2011-10-16 cn-java

9.8.1 违例准则

用违例做下面这些事情:

(1) 解决问题并再次调用造成违例的方法。

(2) 平息事态的发展,并在不重新尝试方法的前提下继续。

(3) 计算另一些结果,而不是希望方法产生的结果。

(4) 在当前环境中尽可能解决问题,以及将相同的违例重新“掷”出一个更高级的环境。

(5) 在当前环境中尽可能解决问题,以及将不同的违例重新“掷”出一个更高级的环境。

(6) 中止程序执行。

(7) 简化编码。若违例方案使事情变得更加复杂,那就会令人非常烦恼,不如不用。

(8) 使自己的库和程序变得更加安全。这既是一种“短期投资”(便于调试),也是一种“长期投资 ”(改善应用程序的健壮性)

9.9 总结

通过先进的错误纠正与恢复机制,我们可以有效地增强代码的健壮程度。对我们编写的每个程序来说 ,错误恢复都属于一个基本的考虑目标。它在Java中显得尤为重要,因为该语言的一个目标就是创建不同 的程序组件,以便其他用户(客户程序员)使用。为构建一套健壮的系统,每个组件都必须非常健壮。

在Java里,违例控制的目的是使用尽可能精简的代码创建大型、可靠的应用程序,同时排除程序里那 些不能控制的错误。

违例的概念很难掌握。但只有很好地运用它,才可使自己的项目立即获得显著的收益。Java强迫遵守 违例所有方面的问题,所以无论库设计者还是客户程序员,都能够连续一致地使用它。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号