《Java面向对象程序设计(第4版)》课件chapter10 异常处理.ppt
《《Java面向对象程序设计(第4版)》课件chapter10 异常处理.ppt》由会员分享,可在线阅读,更多相关《《Java面向对象程序设计(第4版)》课件chapter10 异常处理.ppt(32页珍藏版)》请在三一文库上搜索。
1、教学目标教学目标n异常处理概述n异常分类n异常的捕获处理n重新抛出异常n异常对象的生成n重新抛出异常对象n定义新的异常类型 10.1 异常处理概述异常处理概述n异常异常(Exception):是指程序在运行过程中出现的不正常情况或错误。如除0溢出、数组越界、文件找不到等,这些错误的发生将阻止程序的正常运行。n当出现异常情况时,一个Exception对象就产生了,并交由异常处理程序处理,异常处理程序是使程序得以恢复正常运行的处理过程。10.1 异常处理概述异常处理概述(续续)Java的异常处理机制描述如下:在一个方法的运行过程中,如果发生了异常,l则这个方法(或者是Java虚拟机)生成一个代表该
2、异常的对象(它包含了异常的详细信息),并把它交给运行时系统,运行时系统寻找相应的代码来处理这一异常。我们把生成异常对象并把它提交给运行时系统的过程称为抛出抛出(throw)一个一个异常异常。l运行时系统寻找相应的代码来处理这一异常,系统在方法的调用栈中查找,从产生异常的方法开始进行回朔,沿着被调用的顺序往前寻找,直到找到包含相应异常处理的方法为止。其过程如图10-1所示。这一过程称为捕获捕获(catch)一个异常。l如该异常未进行成功捕获,则程序将终止运行。10.1 异常处理概述异常处理概述(续续)图10-1 捕获异常方法调用method1method2method3method4产生异常处理
3、异常传递异常例例10-1 10-1 一个未被捕获的异常:被零除一个未被捕获的异常:被零除/Exc0.javaclass Exc0 public static void main(String args)int d=0;int a=42/d;程序修改为提供捕获“被零除”的异常处理。只需要把所要监控的代码放进一个try块就可以了。紧跟着try块的,是包括一个说明捕获的错误类型的catch子句。例例10-2 一个一个被捕获的异常:被捕获的异常:被零除被零除/Exc2.jaa/Exc2.jaaclass Exc2 class Exc2 public static void main(String ar
4、gs)public static void main(String args)int d,a;int d,a;try try /monitor a block of code./monitor a block of code.d=0;d=0;a=42/d;a=42/d;catchcatch (ArithmeticException e)(ArithmeticException e)/catch divide-by-zero error /catch divide-by-zero error System.out.println(Division by zero.);System.out.pri
5、ntln(Division by zero.);System.out.println(After catch statement.);System.out.println(After catch statement.);程序运行将正常结束,并显示出如下信息:10.2 10.2 异常分类异常分类nJava的异常是一个对象,所有的异常都直接或间接地继承Throwable类。Throwable类的继承层次结构如下:ThrowableThrowableExceptionErrorErrorRuntimeExceptionRuntimeExceptionIOException10.2 10.2 异常分类
6、异常分类(续续)nThrowable类是所有异常的超类。它有两个子类Error和Exception。nError类及其子类由Java虚拟机生成并抛出,包括动态链接失败、虚拟机错误等。Java程序不应捕获这些异常。nException类及其子类(RuntimeException和 IOException)代表Java程序中可能发生的异常,并且应用程序可以捕获这些异常。nJava将异常分为两种类型:n编译时检查性异常(checked exception)n非检查性异常(unchecked exception,又称运行时异常).10.2 10.2 异常分类异常分类(续续)n除了Java类库所定义的异
7、常类之外,用户也可以通过继承已有的异常类(一般从Throwable类或Exception类继承)来定义自己的异常类,并在程序中使用(利用throw产生,catch捕捉)。10.2 10.2 异常分类异常分类(续续)n常见的异常常见的异常有:ArithmeticException:算术运算溢出。如除数为零 ArrayIndexOutOfBandsException:数组下标越界异常。ArrayStoreException:数组储存异常。数组复制时,若源数组和目标数组的类型不一致时,导致异常。NullPointerException:空指针异常。NumberFormatException:数据格式
8、异常。将字符串(含有非数字)直接转换成数值时产生。OutOfMemoryException:内存溢出异常。在创建一个对象时,由于申请的内存空间过大,导致系统内存不够。IOException:输入/输出中的异常。FileNotFoundException:文件找不到异常。NoClassDefFoundException:没有找到类定义时的异常。10.3 10.3 异常的捕获处理异常的捕获处理n异常处理块的一般形式:异常处理块的一般形式:try /接受监视的程序块,在此区域内发生的异常,由catch中指定的程序处理;catch(要处理的异常类型和标识符)/捕获(catch)一个异常并进行异常处理;
9、catch(要处理的异常类型和标识符)/捕获(catch)一个异常并进行异常处理;finally /最终处理;10.3 10.3 异常的捕获处理异常的捕获处理(续续)1 1、trytry语句语句 捕获异常的第一步就是用try 语句指定一段代码,该段代码就是一次捕获并处理异常的范围。在执行过程中,该段代码可能会产生并抛出一个或多个异常,因此,它后面的catch语句进行捕获时也要做相应的处理。2 2、catchcatch语句语句 每个try语句必须伴随一个或多个catch语句,用于捕获try代码块所产生的异常并做相应的处理。catch语句有一个形式参数,用于指明其所能捕获的异常类型,运行时系统通过
10、参数值把被抛出的异常对象传递给catch语句。当用多个catch语句时,需要记住:异常子类必须在它们任何父类之前使用 public class ExceptionDemo public static void main(String args)try FileInputStream fis=new FileInputStream(test1.txt);int b;while(b=fis.read()!=-1)System.out.print(b);fis.close();catch(FileNotFoundException e)catch(IOException e)异常子类必须在它们任何父
11、类之前使用10.3 10.3 异常的捕获处理异常的捕获处理(续续)3 3、finallyfinally语句语句 无论无论trytry所指定的程序块中抛出或不抛出异常,也无论所指定的程序块中抛出或不抛出异常,也无论catchcatch语句的语句的异常类型是否与所抛出的异常类型一致,异常类型是否与所抛出的异常类型一致,finallyfinally所指定的代码都要所指定的代码都要被执行,它提供了统一的出口。被执行,它提供了统一的出口。通常在finally语句中可以进行资源的清除工作,如关闭打开的文件等。finally在文件处理时非常有用,例如:try 对文件进行处理的程序;catch(IOExcep
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java面向对象程序设计第4版 Java面向对象程序设计第4版课件chapter10 异常处理 Java 面向 对象 程序设计 课件 chapter10 异常 处理
![提示](https://www.31doc.com/images/bang_tan.gif)
链接地址:https://www.31doc.com/p-21713199.html