2006-10-25

scjp学习笔记之异常

关键字: scjp 学习笔记 异常
加紧进度,异常部分。
1、什么是异常?
在Java编程语言中,异常类定义程序中可能遇到的轻微的错误条件。可以写代码来处理异常并继续程序执行,而不是让程序中断。
异常类定义程序所遇到的轻微错误
发生下列情况时,会出现异常:
想打开的文件不存在
网络连接中断
受控操作数超出预定范围
非常感兴趣地正在装载的类文件丢失
错误类定义严重的错误条件

2、调用栈机制
如果方法中的一个语句抛出一个没有在相应的try/catch块中处理的异常,那么这个异常就被抛出到调用方法中。如果异常也没有在调用方法中被处理,它就被抛出到该方法的调用程序。这个过程要一直延续到异常被处理。如果异常到这时还没被处理,它便回到main(),而且,即使main()不处理它,那么,该异常就异常地中断程序。

3、finally
如果终止程序的System.exit()方法在保护码内被执行,那么,这是finally语句不被执行的唯一情况。这就暗示,控制流程能偏离正常执行顺序,比如,如果一个return语句被嵌入try块内的代码中,那么,finally块中的代码应在return前执行。

4、Throwable类不能使用,而使用子类异常中的一个来描述任何特殊异常。每个异常的目的描述如下:
- Error表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。
- RuntimeException表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。比如,如果数组索引扩展不超出数组界限,那么,ArrayIndexOutOfBoundsException异常从不会抛出。比如,这也适用于取消引用一个空值对象变量。因为一个正确设计和实现的程序从不出现这种异常,通常对它不做处理。这会导致一个运行时信息,应确保能采取措施更正问题,而不是将它藏到谁也不注意的地方。
- 其它异常表示一种运行时的困难,它通常由环境效果引起,可以进行处理。例子包括文件未找到或无效URL异常(用户打了一个错误的URL),如果用户误打了什么东西,两者都容易出现。这两者都可能因为用户错误而出现,这就鼓励程序员去处理它们。

5、Java编程语言提供几种预定义的异常。下面是可能遇到的更具共同性的异常中的几种:
- ArithmeticException—整数被0除,运算得出的结果。
- int I =12 / 0;
- NullPointerException—当对象没被实例化时,访问对象的属性或方法的尝试:
- Date d= null;
- System.out.println(d.toString());
- NegativeArraySizeException—创建带负维数大小的数组的尝试。
- ArrayIndexoutofBoundsException—访问超过数组大小范围的一个元素的尝试。
- SecurityException—典型地被抛出到浏览器中,SecurityManager类将抛出applets的一个异常,该异常企图做下述工作(除非明显地得到允许):
- 访问一个本地文件
- 打开主机的一个socket,这个主机与服务于applet的主机不是同一个。
- 在运行时环境中执行另一个程序

6、处理或声明规则
- 用try-catch-finally块来处理异常
- 使用throws子句声明代码能引起一个异常

7、程序员可以做满足该要求的两件事:
第一,通过将Try{}catch(){}块纳入其代码中,在这里捕获给被命名为属于某个超类的异常,并调用方法处理它。即使catch块是空的,这也算是处理情况。
第二,让被调用的方法表示它将不处理异常,而且该异常将被抛回到它所遇到的调用方法中。它是按如下所示通过用throws子句标记的该调用方法的声明来实现的:
public void troublesome() throws IOException
关键字throws之后是所有异常的列表,方法可以抛回到它的调用程序中。尽管这里只显示了一个异常,如果有成倍的可能的异常可以通过该方法被抛出,那么,可以使用逗号分开的列表。
评论
发表评论

您还没有登录,请登录后发表评论

pedestrian_I
搜索本博客
我的相册
830440fc-f0c3-41f2-9282-25f3c490465e-thumb
codeGen
共 1 张
存档
最新评论
评论排行榜