Java程序设计电子教案第五章ppt课件

上传人:我*** 文档编号:148520316 上传时间:2020-10-20 格式:PPT 页数:73 大小:192.50KB
返回 下载 相关 举报
Java程序设计电子教案第五章ppt课件_第1页
第1页 / 共73页
Java程序设计电子教案第五章ppt课件_第2页
第2页 / 共73页
Java程序设计电子教案第五章ppt课件_第3页
第3页 / 共73页
Java程序设计电子教案第五章ppt课件_第4页
第4页 / 共73页
Java程序设计电子教案第五章ppt课件_第5页
第5页 / 共73页
点击查看更多>>
资源描述

《Java程序设计电子教案第五章ppt课件》由会员分享,可在线阅读,更多相关《Java程序设计电子教案第五章ppt课件(73页珍藏版)》请在金锄头文库上搜索。

1、第5章 异常,5.1 编程中的错误 5.2异常与异常类 5.3异常的处理 5.4 异常地抛出 5.5应用举例,5.1 编程中的错误,程序中出现的错误必须要处理,否则程序会错误退出或带来错误的结果和状态,造成越来越多的异常现象。 根据错误的性质和特点,般可把错误分为编译错误和运行错误两种。 5.1.1 编译错误 编译错误是由于所编码的程序存在语法问题,未能通过内源代码到目标码的编译过程而产生的,它是由语言的编译系统负责检测和报告。,下一页,返回,5.1 编程中的错误,每种计算机高级语言都有自己的语法规范,编译系统就根据这个规范来检查编程人员所书写的源代码(程序)是否符合既定的标准。有的高级语言的

2、语法规定得比较严格,有的语言则给编程人员很大的自由度,如C语言,程序可以写得很灵活,使编程者可充分发挥他们的核心和能力。Java语言是定位于网络计算的安全性要求较高的语言,它的语法规范设计得比较全面,相对于C语言增加了不少规定。例如,数组元素下标越界检查、检查对未开辟空间对象的使用等。由于更多的检查工作由系统自动完成,可以减少编程者的设计负担和程序中的隐含错误,提高初学者编程的成功率。,上一页,下一页,返回,5.1 编程中的错误,大部分编译错误是由于对语法不熟悉或拼写失误等引起的,例如在Java语言中规定:需在每个句子的末尾使用分号,标识符区分大小写,如果不注意这些细杰,就会引发编译错误。由于

3、编译系统会给出每个编译错误的位置和相关的错误信息,所以修改编译错误相对较简单;但同时由于编译系统判定错误比较机械,再参考他所指出的错误地点和信息时应灵活的同时参照上下文其他语句,将程序作为一个整体来检查。 没有编译错误是一个程序能正常运行的基本条件,只有所有的编译错误都改正了,源代码才可以被成功的编译成目标代码或字节代码。,上一页,下一页,返回,5.1 编程中的错误,5.1.2 运行错误 一个没有编译错误的可执行或解释的程序,距离完全正确的程序通常还有一段距离,这是因为排除了编译错误,程序中可能还存在着运行错误。 运行错误是在程序的运行过程中产生的错误。根据性质不同,运行错误还可分为系统运行错

4、误和逻辑运行错误。,上一页,下一页,返回,5.1 编程中的错误,系统错误是指程序在执行过程中引发了操作系统的问题。应用程序是工作在计算机的操作系统平台上的,如果应用程序运行时所产生的运行错误危及操作系统,对操作系统产生损害,就有可能造成整个计算机的瘫痪,例如死机、死循环等。所以不排除系统运行错误,程序就不能正常地工作。系统运行错误通常比较隐秘,排除时应根据错误的现象,结合源程序仔细判断。例如,出现死循环,就应该检测源程序中的循环语句及其中止条件;出现死机,就应该检查程序中的内存分配处理语句等。,上一页,下一页,返回,5.1 编程中的错误,排除了系统运行错误,程序可以顺利执行了,却仍然不能代表它

5、已经毫无问题了。因为程序中还有可能存在着逻辑运行错误。逻辑运行错误是指程序不能实现编程人员的设计意图和设计功能而产生的错误,例如排序时不能正确处理数组头后的元素等。有些逻辑运算错误是由于算法考虑不周引起的,也有些则来自编码过程中的疏忽。 排除运行错误时,一个非常有效和常用的手段是使用开发环境所提供的单步运行机制和设置断点功能来分解程序运行过程,使之在人为的控制下边调试边运行。在调试过程中,调试者可以随时检查变量中保存的中间量,设置临时运行环境,一步一步地检查程序的执行过程,从而挖出隐藏的错误。,上一页,返回,5.2异常与异常类,5.2.1 异常处理机制概述 异常就是在程序的运行过程中所发生的异

6、常事件(不正常现象),它中断指令的正常执行。在Java程序的执行过程中,如果出现了异常事件,就会生成一个异常对象,故又称为特殊的运行错误对象。很多类型的错误也都会导致异常的产生,如需要打开的文件不存在、内存不够、数据访问超界、严重者导致硬盘崩溃等,都会影响程序的正常执行。 在网络环境中运行的Java程序,安全是首先考虑的重要元素之一。为了能够及时有效地处理程序中的远行错误,Java中通过引入异常和异常类来处理。作为面向对象的语言,异常与其他语言要素一样,是面向对象规范的一部分,是异常类的对象。,下一页,返回,5.2异常与异常类,Java中定义了很多异常类,每个异常类都代表了一种运行错误,类中包

7、含了该运行错误的信息和处理错误的方法等内容。每当Java程序运行过程中发生一个可识别的运行错误时,即该错误有一个异常与之相对应时,系统都会产生一个相应的该异常类的对象,即产生一个异常。一旦一个异常对象产生了,系统中就一定有相应的机制来处理它,确保不会产生死机、死循环或其他对操作系统的损害,从而保证了整个程序运行的安全性。这就是java的异常处理机制。 如在例5-1中,当我们在一个文件上建立文件输入流时,如果这个文件并不存在,异常就会生成,另外,在从文件中读取数据时,也可能发生IO异常。,上一页,下一页,返回,5.2异常与异常类,例5-1 文件操作异常。 Import java .io.*; C

8、lass Exception Demol Public static void main ( String args ) File Input Stream Fis=nes File Input Stream (“text”) ; Int b; While ( ( b=fis . read () ) ! = -1 ) System .out .print (b) ; Fis .close (); ,上一页,下一页,返回,5.2异常与异常类,当我们编译这个程序时,屏幕上会输出下面的信息: ExceptionDemo1.Java:6: Exception java. io. File Not Fo

9、und Exception must be caught,or it must be declared in the throws clause of this method File Input Stream fis=new File Input Stream(“text”); ExceptionDemol.java:8: Exception java .io .IOException must be caught ,or it must be declared in the throws clause of this method. While(b=fis .read()!=-1) ,上一

10、页,下一页,返回,5.2异常与异常类,2 errors 在Java程序的执行过程中,异常对象可能是由正在运行的方法生成,也可能由Java虚拟机生成,其中包含一些信息指明异常事件的类型以及当异常发生时程序的运行状态等。生成的异常对象将传递给Java运行时系统,这一异常的产生和提交过程称为抛出(throw)异常。 当Java运行时系统得到一个异常对象时,它将会寻找处理这一异常的代码。寻找的过程从生成异常对象的代码块开始,沿着方法的调用栈逐层回溯,直到找到一个方法能够处理这种类型的异常为止。然后运行时系统把当前异常对象交给这个方法进行处理。这一过成称为捕获(catch)异常。 如果Java运行时系统

11、找不到可以捕获异常的方法,则运行时系统将终止,相应的Java程序也将退出。例5-2中出现的即为这种情况。,上一页,下一页,返回,5.2异常与异常类,例5-2 当0作为除数时,会发生除零溢出的异常事件,使程序无法继续运行。 Class ExceptionDem02 Public static void main(String args ) Int a(); System.out.println (5a); 我们编译这个程序得到其字节码文件,然后运行它,屏幕上的显示如下: javaLang.ArthmeticException:/by zero at ExceptionDemo2main(Exce

12、ptionDemo2.Java:4),上一页,下一页,返回,5.2异常与异常类,在上面的两个例子中,我们都遇到了异常。屏幕上所显示的信息: javaio File Not Found Exception ,java .io. IOException 以及 javaLang Arlthmetic Exception 分别指明了异常的类型。同时我们也可以看到,对于一些异常,在程序中必须对它进行处理,否则编译程序会指出错误(如例5-1)。但对另一些异常,在程序中可以不做处理,而直接由运行时系统来处理(如例5-2)。 使用异常处理程序出错有以下两个原因:一是将错误处理程序与正常程序流分开,增加程序的可

13、读性和可维护性;二是可容易的指出异常在何处处理。,上一页,下一页,返回,5.2异常与异常类,5.2.2 异常类结构与组成 在java类库的每个包中都定义了异常类,所有这些类都是类Throwable的子类。Throwable类属于类库java.lang包中的一个类,在程序中不必使用import语句引入即可食用。Throwable类派生了两个子类:Exception和Error。其中Error类由系统保留,而Exception类则供应用程序使用。Java作为面向对象设计语言,它定义了很多标准的异常处理类,采用捕获-抛出(catch-throw)方式,捕获并处理异常。,上一页,下一页,返回,5.2异

14、常与异常类,Error类的子类有后缀Error,它们用于指示异常系统条件。例如Out Of Memory Error表示虚拟机内存超界,内存单元收集程序无法获得更多的内存:Stack Over Flow Error表示翻译器中堆栈溢出。这些Error类的子类包括动态链接失败、虚拟机错误等,通常Java程序不捕获这些异常,也不会抛出这种异常。一般来说,这些异常是不可修复的,不易处理。 Exception类的子类一般是可以修复的。例如EOF Exception表示打开的文件不再有可读数据;File Nor Found Exception表示打开的文件在文件系统中不存在。这一子类是Java程序中所大

15、量处理的异常。并且同其他的类一样,Exception类有自己的方法和属性。他的构造函数有两个:,上一页,下一页,返回,5.2异常与异常类,格式 public Exception (); Public Exception (String s); 说明 第二个接受字符串参数传入的信息,通常是对该异常所对应错误的描述。 Exception类从父类Throwable那里还继承了若干方法,其中常用的有: 格式 public String to String(); 说明 显示异常信息以及getMessage()返回信息的简短描述的字符串。 格式 public void print StackTrace()

16、; 说明 打印异常发生处堆栈跟踪信息,包括异常的类名、方法名及所在程序的行数,没有返回值,实际上它的功能是完成一个打印操作,在当前的标准输出(一般就是屏幕)上打印输出当前异常对象的堆栈使用轨迹,也即程序先后调用执行了哪些对象或类的那些方法,使得运算过程中产生了这个异常对象。,上一页,下一页,返回,5.2异常与异常类,格式 public Sting GetMessage (); 说明 获得与异常和错误相关的更详细的错误信息,但非每个异常都有详细信息。如果没有详细信息,该方法调用后返回空值。 5.2.3 系统定义的运行异常 Exception类有若干子类,每一个子类代表了一种特定的运行时异常。其中有些是系统实现定义好并包含在Java类库中的,称为系统定义的运行异常。 系统定义的运行异常通常对应着系统运行错误。由于这种错误可能导致操作系统错误甚至ishi整个系统的瘫痪,如例5-1所涉及到的File Not Found Exception和IO Exception。对于这类异常来说,如果程序不进行处理,可能会带来意想不到的结果,所以定义异常类来特别处理,下面列出

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

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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