Java语言程序设计课程教学辅导技术资料——第9章 异常(例外)处理技术及应用_第1页
Java语言程序设计课程教学辅导技术资料——第9章 异常(例外)处理技术及应用_第2页
Java语言程序设计课程教学辅导技术资料——第9章 异常(例外)处理技术及应用_第3页
Java语言程序设计课程教学辅导技术资料——第9章 异常(例外)处理技术及应用_第4页
Java语言程序设计课程教学辅导技术资料——第9章 异常(例外)处理技术及应用_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1.1 Java语言程序设计课程教学辅导技术资料第9章 异常(例外)处理技术及应用【教学目标】在本单元中希望您重点了解并掌握如下知识点:Java异常编程规那么,try、catch、finally语句,声明和抛出异常,用户自定义异常类的编程规那么。1.1.1 Java异常编程技术1、有关异常方面的根底知识 1错误处理在进行程序设计时,错误的产生是不可防止的。这是任何程序设计语言都要解决的问题。2如何处理错误?把错误交给谁去处理?程序又该如何从错误中恢复?3什么是异常程序在运行过程中所发生的错误事件如数组越界、文件操作时未找到文件、除法溢出等,而这些错误在设计时不能准确地识别出但又可能会发生或者不

2、会发生;同时它会中断指令的正常执行。import java.io.*;class ExceptionDemopublic static void main(String args) FileInputStream fis=new FileInputStream("text"); /如果所翻开的文件名不存在的int b; /情况下将产生异常while(b=fis.read() != -1)System.out.println(b);fis.close();4正确理解程序设计中的三种错误语法错误编译时的错误;逻辑错误运行时的错误;异常错误运行时的错误但取决于执行环境。5异常的特

3、点以“人身保险为例加以说明异常的特性程序在运行过程中所发生的错误事件程序员在编程时无法预知它是否会产生产生与否取决于用户当时的执行环境。1.1.2 Java中的异常处理1、Java中的异常处理:它是面向对象方式的错误处理方法。2、非结构化错误处理的缺点1代码很难阅读、调试和维护2容易无视错误3通过函数的返回值来发出错误信息,这易于导致很多错误并且无法提供错误产生的内部细节。 3、异常处理的优点OOP方式的错误处理编程1能将“错误处理代码与“常规功能代码相别离;2能将错误沿调用栈向上传播;3能按错误类型和错误对象分组,分门别类地加以处理。4允许类似于 Switch Case 语句的分类过滤错误例

4、外4、什么情况下使用例外机制?1当方法因为自身无法控制的原因而不能完成其任务如文件不存在,网络连接无法建立2在大的工程中采用统一的方式处理错误时3例外应该是不经常发生但却可能发生的故障,但一定发生的事件不应该用例外机制来处理4例外处理用于使系统从故障中恢复5提示信息/不产生无效的结果/释放资源5、Java中的异常处理机制1异常处理机制:主要表达在“抛出异常并“捕获异常这两个层次。2抛出异常:当程序执行过程中产生异常时,运行系统将抛出异常类对象它代表某一异常类型的错误事件。3捕获异常:用户程序或运行系统可以捕获该异常类对象在函数的调用栈中查找能处理此异常事件的程序为止并相应地给出处理的方法代码。

5、4如何捕获异常:采用try、catch、 finally语句块。1import java.io.*;2class ExceptionDemo3public static void main(String args)4FileInputStream fis=null;5try /划定程序出所可能产生的异常范围6 System.out.println("first argument is"+args0);7fis=new FileInputStream("text");8System.out.println("content of text is:

6、");9int b;10while(b=fis.read()!= -1)11System.out.println(char)b);121314catch(FileNotFoundException e) /捕获程序中所可能产生的各种异常15System.out.println(e);1617catch(IOException e) /注意各个catch的摆放的前后位置的要求18System.out.println(e);1920catch(IndexOutOfBoundsException e)ut.println(e);2223finally/统一的出口24if(fis !=nul

7、l)25System.out.println("Closing file");26fis.close();2728else29 System.out.println("FileInputStream not Open !");30 3132336、try、catch、 finally语句块的用法1try语句块它指定可能会产生异常的语句范围,也即为catch规定异常捕获的语句范围。2catch语句块它指明需要捕获异常事件的类型并相应地给出处理的方法代码。3finally它指定一代码块,不管是否有异常产生或是否捕获住该异常,程序都从此处继续向后执行。从而到达

8、提供统一的出口如关闭文件、去除系统资源等。4应用例如import java.io.*;public class TextFileWritepublic static void main(String args)try/向文件追加数据,因为第二个参数为true表示为追加数据FileWriter fr=new FileWriter("UserDataFile.txt",true); fr.write("这是我这次新追加的数据 !n");/写入一行字符串fr.close();catch(IOException e)7、程序中对异常处理的方法当编程使用某一个带有

9、异常定义的函数时,程序员可以有如下两种处理异常的方法。1方法一:通过try、catch、finally语句块,捕获住该异常。public class ExceptionDemo/实例一 static void compute(int a) throws Exception if(a >10)throw new Exception(); System.out.println("Normal Exit"); public static void main(String args ) try int Value=1;compute(Value);Value=20;compu

10、te(Value);catch(Exception e) /异常的捕获 System.out.println("Caught" + e);2方法二不捕获和处理该异常但必须继续上传递交给上一级的调用者来处理,这可通过throws语句来声明所抛出的异常。 import java.io.*;/实例二class Exception Demo public static void main(String args) throws Exception int Value=1; compute(Value); Value=20; compute(Value); static void c

11、ompute(int a) throws Exception /异常的声明 if(a >10) throw new Exception(); /异常的抛出 System.out.println("Normal Exit"); 8、声明和抛出异常1异常声明:应该在下面的场合给出异常声明在可能会出现异常的函数声明中不捕获和处理异常的函数声明中2定义格式: 在函数声明的后面采用“throws 异常类型名列表来定义异常。如:返回类型 函数名形参定义throws 异常类型名 函数体定义; 3 异常的抛出系统自动抛出的异常:程序中出现系统中定义的异常时,可以由系统自动来抛出它。对

12、于在函数定义时采用throws所声明的某个异常类型时,在其函数体中必须使用“throw 异常事件对象名 来抛出该种类型的异常事件即程序员自己抛出程序中定义的自己的异常事件,以便上一级的调用者来捕获并处理它。9、JDK系统异常类的结构1异常类的层次在JDK中,每个包中都定义了异常类,而所有的异常类都直接或间接地继承于Throwable类。上图为jdk中异常类的继承关系。java中的异常类可分为两大类:1Error:动态链接失败,虚拟机错误等,通常Java程序不应该捕获这类异常,也不会抛弃这种异常。2Exception:运行时异常和非运行时异常。2运行时异常 继承于RuntimeException

13、的类都属于运行时异常,例如算术异常除零错、数组下标越界异常等等。由于这些异常产生的位置是未知的,Java 编译器允许程序员在程序中不对它们做出处理。 class ExceptionDemo2public static void main( String args )int a = 0;System.out.println( 5/a );运行结果:C:>java ExceptionDemo2java.lang.ArithmeticException: / by zero atExceptionDemo2.main(ExceptionDemo2.java:4)因为除数不能为0,所以在程序运行

14、的时候出现了除0溢出的异常事件。3非运行时异常 除了运行时异常之外的其他由Exception 继承来的异常类都是非运行时的异常,例如FileNotFoundException文件未找到异常。Java编译器要求在程序中必须处理这种异常,捕获异常或者声明抛弃异常。10、声明自己的异常类1目的为应用程序中特定错误提供相应的错误提示信息,而不便采用标准的错误信息,同时也可扩充Java系统中的异常类以满足用户的特定的应用需要。 2编程要求从系统中的Exception类或其它相关的类来派生即将用户的异常类作为系统中的子类;声明自己的异常类的成员数据或成员方法,以反映用户自己的错误信息。3用途可以实现在用户

15、程序中声明、捕获和抛出自己的异常类对象。4实例讲解class MyException extends Exception /注意:声明自己的异常类但必须从Exception类派生 private int detail;MyException(int a) detail=a; public String toString() return "MyException"+detail; public class ExceptionDemo static void compute(int a) throws MyException if(a >10) throw new MyException(a); /抛出自己的异常类对象System.out.println("Normal Exit&q

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论