scjp培训第七章java异常

上传人:飞*** 文档编号:5509272 上传时间:2017-09-06 格式:DOC 页数:8 大小:83KB
返回 下载 相关 举报
scjp培训第七章java异常_第1页
第1页 / 共8页
scjp培训第七章java异常_第2页
第2页 / 共8页
scjp培训第七章java异常_第3页
第3页 / 共8页
scjp培训第七章java异常_第4页
第4页 / 共8页
scjp培训第七章java异常_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《scjp培训第七章java异常》由会员分享,可在线阅读,更多相关《scjp培训第七章java异常(8页珍藏版)》请在金锄头文库上搜索。

1、第七章 异 常本模块讲述建立在 Java 编程语言中的错误处理装置。第一节 相关问题讨论下述问题与本模块中的材料相关:- 在大部分编程语言中,如何解决运行时错误?第二节 目 的本模块学习结束后,能够:- 定义异常- 使用 try,catch 和 finally 语句- 描述异常分类- 开发程序来处理自己的异常 第三节 异 常异 常异常类定义程序所遇到的轻微错误发生下列情况时,会出现异常:想打开的文件不存在网络连接中断受控操作数超出预定范围非常感兴趣地正在装载的类文件丢失错误类定义严重的错误条件7.3.1 介绍什么是异常?在 Java 编程语言中,异常类定义程序中可能遇到的轻微的错误条件。可以写

2、代码来处理异常并继续97程序执行,而不是让程序中断。在程序执行中,任何中断正常程序流程的异常条件就是错误或异常。例如,发生下列情况时,会出现异常:- 想打开的文件不存在- 网络连接中断- 受控操作数超出预定范围- 非常感兴趣地正在装载的类文件丢失在 Java 编程语言中,错误类定义被认为是不能恢复的严重错误条件。在大多数情况下,当遇到这样的错误时,建议让程序中断。Java 编程语言实现 C+异常来帮助建立弹性代码。在程序中发生错误时,发现错误的方法能抛出一个异常到其调用程序,发出已经发生问题的信号。然后,调用方法捕获抛出的异常,在可能时,再恢复回来。这个方案给程序员一个写处理程序的选择,来处理

3、异常。通过浏览 API,可以决定方法抛出的是什么样的异常。7.3.2 实例考虑一下 HelloWorld.java 程序版本的简单扩展,它通过信息来循环:1. public class HelloWorld 2. public static void main (String args) 3. int i = 0; 4.5. String greetings = 6. Hello world!,7. No, I mean it!,8. HELLO WORLD!9. ;10.11. while (i java HelloWorld2. Hello world!3. No, I mean it!4

4、. HELLO WORLD!5. java.lang.ArrayIndexOutOfBoundsException: 36. at HelloWorld.main(HelloWorld.java:12) 异常处理允许程序捕获异常,处理它们,然后继续程序执行。它是分层把关,因此,错误情况不会介入到程序的正常流程中。特殊情况发生时,在与正常执行的代码分离的代码块中被处理。这就产生了更易识别和管理的代码。98第四节 异常处理Java 编程语言提供了一个来考虑哪个异常被抛出以及如何来恢复它的机制。7.4.1 try 和 catch 语句try 和 catch 语句1. try 2. / code th

5、at might throw a particular exception3. catch (MyExceptionType e) 4. / code to execute if a MyExceptionType exception is thrown 5. catch (Exception e) 6. / code to execute if a general Exception exception is thrown 7. 要处理特殊的异常,将能够抛出异常的代码放入 try 块中,然后创建相应的 catch 块的列表,每个可以被抛出异常都有一个。如果生成的异常与 catch 中提到的相

6、匹配,那么 catch 条件的块语句就被执行。在 try 块之后,可能有许多catch 块,每一个都处理不同的异常。1. try 2. / code that might throw a particular exception3. catch (MyExceptionType e) 4. / code to execute if a MyExceptionType exception is thrown 5. catch (Exception e) 6. / code to execute if a general Exception exception is thrown 7. 7.4.2

7、 调用栈机制如果方法中的一个语句抛出一个没有在相应的 try/catch 块中处理的异常,那么这个异常就被抛出到调用方法中。如果异常也没有在调用方法中被处理,它就被抛出到该方法的调用程序。这个过程要一直延续到异常被处理。如果异常到这时还没被处理,它便回到 main(),而且,即使 main()不处理它,那么,该异常就异常地中断程序。考虑这样一种情况,在该情况中 main()方法调用另一个方法(比如,first()),然后它调用另一个(比如,second())。如果在 second()中发生异常,那么必须做一个检查来看看该异常是否有一个 catch;如果没有,那么对调用栈(first())中的下

8、一个方法进行检查,然后检查下一个(main())。如果这个异常在该调用栈上没有被最后一个方法处理,那么就会发生一个运行时错误,程序终止执行。7.4.3 finally 语句finally 语句1. try 2. startFaucet();3. waterLawn();4. 5. finally 6. stopFaucet();7. finally 语句定义一个总是执行的代码块,而不考虑异常是否被捕获。下述样板代码来自 Frank Yellin 弗兰克叶林的白皮书Java 中的低级安全:1. try 2. startFaucet();3. waterLawn();4. 5. finally 9

9、96. stopFaucet();7. 在前面的例子中,即使异常在打开开关或给草地浇水时发生,开关也能被关掉。try 后面的括号中的代码被称做保护码。如果终止程序的 System.exit()方法在保护码内被执行,那么,这是 finally 语句不被执行的唯一情况。这就暗示,控制流程能偏离正常执行顺序,比如,如果一个 return 语句被嵌入 try 块内的代码中,那么,finally 块中的代码应在return 前执行。7.4.4 重访前例下面的例子是第 169 页 main()方法的重写。本程序以前的版本中产生的异常被捕获,数组索引重新设定,使下述程序继续运行。1. public stat

10、ic void main (String args) 2. int i = 0;3. String greetings = 4. Hello world!,5. No, I mean it!,6. HELLO WORLD!7. ;8. while (i 4) 9. try 10. System.out.println (greetingsi);11. catch (ArrayIndexOutOfBoundsException e)12. System.out.println( Re-setting Index Value);13. i = -1;14. finally 15. System.o

11、ut.println(This is always printed);16. 17. i+;18. / end while()19. / end main() 当循环被执行时,下述在屏幕上出现的信息将改变。1. Hello world!2. This is always printed3. No, I mean it!4. This is always printed5. HELLO WORLD! 6. This is always printed7. Re-setting Index Value 8. This is always printed 第五节 异常分类在 Java 编程语言中,异

12、常有三种分类。Java.lang.Throwable 类充当所有对象的父类,可以使用异常处理机制将这些对象抛出并捕获。在 Throwable 类中定义方法来检索与异常相关的错误信息,并打印显示异常发生的栈跟踪信息。它100有 Error 和 Exception 两个基本子类,如下图所示:Throwable 类不能使用,而使用子类异常中的一个来描述任何特殊异常。每个异常的目的描述如下:- Error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。- RuntimeException 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不

13、会发生的情况。比如,如果数组索引扩展不超出数组界限,那么,ArrayIndexOutOfBoundsException 异常从不会抛出。比如,这也适用于取消引用一个空值对象变量。因为一个正确设计和实现的程序从不出现这种异常,通常对它不做处理。这会导致一个运行时信息,应确保能采取措施更正问题,而不是将它藏到谁也不注意的地方。- 其它异常表示一种运行时的困难,它通常由环境效果引起,可以进行处理。例子包括文件未找到或无效 URL 异常(用户打了一个错误的 URL),如果用户误打了什么东西,两者都容易出现。这两者都可能因为用户错误而出现,这就鼓励程序员去处理它们。第六节 共同异常共同异常- Arith

14、meticException- NullPointerException- NegativeArraySizeException- ArrayIndexoutofBoundsException- SecurityExceptionJava 编程语言提供几种预定义的异常。下面是可能遇到的更具共同性的异常中的几种:- ArithmeticException整数被 0 除,运算得出的结果。- int I =12 / 0;- NullPointerException当对象没被实例化时,访问对象的属性或方法的尝试:- Date d= null;- System.out.println(d.toStrin

15、g();101- NegativeArraySizeException创建带负维数大小的数组的尝试。- ArrayIndexoutofBoundsException访问超过数组大小范围的一个元素的尝试。- SecurityException典型地被抛出到浏览器中,SecurityManager 类将抛出 applets 的一个异常,该异常企图做下述工作(除非明显地得到允许):- 访问一个本地文件- 打开主机的一个 socket,这个主机与服务于 applet 的主机不是同一个。- 在运行时环境中执行另一个程序第七 节 处理或声明 规则处理或声明规则- 用 try-catch-finally 块来处理异常- 使用 throws 子句声明代码能引起一个异常为了写出健壮的代码,Java 编程语言要求,当一个方法在栈(即,它已经被调用)上发生 Exception(它与 Error或 RuntimeException 不同)时,那么,该方法必须决定如果出现问题该采取什么措施。程序员可以做满足该要求的两件事:第一,通过将 Trycatch()块纳入其代码中,在这里捕获给被命名为属于某个超

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号