第8章_异常及其处理_第1页
第8章_异常及其处理_第2页
第8章_异常及其处理_第3页
第8章_异常及其处理_第4页
第8章_异常及其处理_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

1、LOGO第8章 异常及其处理计算机学院计算机学院核心要点核心要点捕获异常捕获异常1声明异常声明异常2抛出异常抛出异常3创建自己的异常创建自己的异常45 异常的概念异常的概念1.1 异常v程序中的错误分三类:程序中的错误分三类: 语法错误 通过编译其检查定位 逻辑错误 通过程序员调试解决 运行时错误 通过异常处理来解决1.1 什么是异常?v异常,也称为例外,表示程序运行中出现意外情异常,也称为例外,表示程序运行中出现意外情况的一个信号。况的一个信号。v异常是一种特殊的运行错误对象,一旦产生会异常是一种特殊的运行错误对象,一旦产生会中中断断程序的正常执行。程序的正常执行。1.2 异常的分类1.2

2、异常类v产生运行时错误的情况很多,需要多种不同的异产生运行时错误的情况很多,需要多种不同的异常信号来表示。常信号来表示。vJava提供丰富的异常类,异常是异常类的提供丰富的异常类,异常是异常类的对象对象。1.2 异常类1.2异常类v 常见系统预定义异常类:常见系统预定义异常类:描述描述ClassNotFoundException试图使用一个不存在的类ArrayIndexOutOfBoundsException试图访问不存在的数组元素FileNotFoundException试图打开一个不存在的文件CloneNotSupportedException试图克隆一个没有实现Cloneable接口类的

3、实例IOException输入无效数据,打开不存在的文件等NullPointException访问空引用1.3 如何处理异常问题?v可以通过对程序可能会产生的异常进行处理,可以通过对程序可能会产生的异常进行处理,以保证程序的正常运行。以保证程序的正常运行。 try /可能会发生异常的语句 catch(异常对象) /处理异常 1.4 异常处理机制v为程序员提供一种解决运行时错误的方法。为程序员提供一种解决运行时错误的方法。 当程序遇到运行时错误时,会产生并抛出一个信号(异常) 通过try/catch语句捕获这个信号(异常) 根据这个信号(异常)的不同进行相应的处理。1.5 异常处理机制v涉及到的

4、问题:涉及到的问题: 异常的定义(异常类) 异常的抛出(throw) 异常的捕获处理(try-catch) 异常的声明/报告(throws)2.捕获异常v要保证程序在异常抛出后能够正常运行,需要对要保证程序在异常抛出后能够正常运行,需要对异常进行处理。异常进行处理。 通过try-catch语句对异常进行捕获并处理2.1异常处理流程v未产生异常情况:未产生异常情况: try语句结束后异常处理结束v产生异常并捕获成功情况:产生异常并捕获成功情况: try语句在产生异常处中断,转到catch语句执行;v产生异常未捕获情况:产生异常未捕获情况: 所在方法中断;2.1 异常处理语法try 可能抛出异常的

5、语句组;catch (异常类1 e) 异常处理语句组1;catch (异常类n e) 异常处理语句组n;finally 语句组; 2.2 多重catch子句v对可能产生的多种异常可以通过多个对可能产生的多种异常可以通过多个catch子句子句进行捕获和分别处理。进行捕获和分别处理。v注意:注意: 多个catch子句中,前面catch的异常不能是后面catch异常的父类 一般把捕获Exception异常的catch子句写在最后,能够捕获所有的异常。2.3 finally子句vtry-catch语句后可以加语句后可以加finally子句子句v写在写在finally子句中的语句无论异常是否产生,无子句

6、中的语句无论异常是否产生,无论产生的异常是否捕获成功都要执行论产生的异常是否捕获成功都要执行练习1. 有如下语句 int a = 39; int b = 0; int c = a/b; System.out.println(除法完成。);2. 把上面的语句写到一个方法中,思考哪句话运行时会有错误?如何去处理这个错误?那么“除法完成”这句话能否运行到?3. 编写异常的捕获,来处理这几条语句,并打印异常信息以及“除数不能为0。”信息。4. 无论有否异常的发生,都要打印输出“方法完成。”3.异常声明(异常报告)v如果一个方法中存在如果一个方法中存在未处理未处理的异常,则需要在该方的异常,则需要在该方

7、法头上用法头上用throws关键字声明该异常。关键字声明该异常。v通过异常声明可以将异常报告给方法的调用者。通过异常声明可以将异常报告给方法的调用者。vRuntimeException及其子类的异常可以不声明。及其子类的异常可以不声明。4. 抛出异常v系统预定义异常系统预定义异常 系统自动抛出 通过throw抛出v自定义异常自定义异常 通过throw抛出v注意:注意:throw后不能写语句;后不能写语句;练习1. 编写帐户类编写帐户类Account: 属性:帐号,余额 存钱方法save(double d),增加收入后,打印输出余额; 取钱方法pay(double d),减少收入后,打印输出余额

8、2. 在取钱方法中,做异常处理,当余额小于在取钱方法中,做异常处理,当余额小于0时,时,抛出余额不足的异常抛出余额不足的异常BallanceNotEnoughException3. 编写测试类,调用取钱方法时,捕获余额不足的编写测试类,调用取钱方法时,捕获余额不足的异常,并输出异常信息异常,并输出异常信息“余额不足!余额不足!”;实验1. 创建这样一个程序,它企图引用一个指向空值的变量,并尝试用一个不正确的下标去访问一个数组,如用一个负的下标值在一个字符串中得到一个字符。执行这个程序并描述所看到的错误信息。 2. 写一个程序,用随机选择的100个元素创建一个数组(Math.random()*1

9、000,循环100次),从键盘输入数组的下标,然后显示这个指定下标的数组元素,如果指定下标越界ArrayIndexOutOfBoundsException,则显示信息“out of Bound”。 5 创建自己的异常v自定义异常类自定义异常类 程序员可以自定义异常类,用于描述特定的异常情况 继承Exception类就可以定义自己的异常类5 创建自己的异常v异常中的方法异常中的方法 public String getMessage( ) public String toString() public void printStackTrace( )作业1.自定义异常FailureException表示不及格;2.创建程序,显示用户输入的成绩,当成绩小于60时,抛出Fa

温馨提示

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

评论

0/150

提交评论