JAVA -异常处理

上传人:豆浆 文档编号:3151041 上传时间:2017-07-30 格式:PPT 页数:34 大小:688KB
返回 下载 相关 举报
JAVA -异常处理_第1页
第1页 / 共34页
JAVA -异常处理_第2页
第2页 / 共34页
JAVA -异常处理_第3页
第3页 / 共34页
JAVA -异常处理_第4页
第4页 / 共34页
JAVA -异常处理_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《JAVA -异常处理》由会员分享,可在线阅读,更多相关《JAVA -异常处理(34页珍藏版)》请在金锄头文库上搜索。

1、,异常处理,第8章,教学目标: 了解传统错误处理和面向对象中的异常处理的差别,理解异常处理的优越性,掌握如何在程序中抛出、捕获和处理异常,了解自定义异常的方法。 教学重点: 异常的概念、异常处理的类层次、异常的产生捕获和处理、自定义异常类 。教学难点: 异常的处理。,异常处理,一、异常的概念1.异常: 程序在运行过程中所发生的错误事件(如数组越界、文件操作时未找到文件、除法溢出等),而这些错误在设计时不能准确地识别出但又可能会发生或者不会发生。2.异常处理 异常处理是指程序获得异常并处理,然后继续程序的执行。 3.正确理解程序设计中的三种错误: 语法错误(编译时的错误);逻辑错误(运行时的错误

2、); 异常错误(运行时的错误但取决于执行环境)。,3. 异常的特点程序在运行过程中所发生的错误事件; 程序员在编程时无法预知它是否会产生; 产生与否取决于用户当时的执行环境。4. Java中的异常处理 它是面向对象方式的错误处理方法。,异常处理,当方法执行过程中出现错误而干扰了程序流程时,会抛出一个异常,即构造出一个异常类的对象。异常类对象代表当前出现的一个具体异常,该对象封装了异常的有关信息。异常分为系统定义异常和用户自定义异常。异常抛出方式:自动抛出(系统定义异常)用throw语句抛出(用户定义异常)方法中的异常处理:捕获异常,就地解决,并使程序继续执行 。将异常向外转移,即将异常抛出方法

3、之外,由调用该方法的环境去处理。,异常处理机制,异常处理的优点(OOP方式的错误处理编程)能将“错误处理代码与“常规功能代码相分离;能将错误沿调用栈向上传播;能按错误类型和错误对象分组,分门别类地加以处理。允许类似于 Switch Case 语句的分类过滤错误例外非结构化错误处理的缺点代码很难阅读、调试和维护容易忽视错误,异常处理机制,JDK系统异常类的结构,常见RuntimeException,本类异常一般不用特意处理,只要细心可以避免!,常见非运行时异常,本类异常必须处理,我们所指的异常处理就是针对这样的异常。,Error,虽然我们很细心,但是程序中不免还会出现各种原因造成程序中断执行。这

4、些错误的产生原因如:内存不足、线程死锁等,属于系统等级且非常严重的错误,已经不能称为异常,所以称为Error。一般的Error主要有:,异常的分类,1.系统定义异常 系统将常见错误予定义为若干异常类 当出现异常时自动抛出常见的系统定义的异常类:ClassNotFoundException 未找到要加载的类ArrayIndexOutOfBoundsException 数组越界使用FileNotFoundException 未找到指定的文件或目录IOException 输入、输出错误,NullPointerException 引用空的尚无内存空间的对象ArithmeticException 算术错

5、误,如除数为0InterruptedException 一线程在睡眠、等待或其他原因暂停时被其他线程打断UnknownHostException 无法确定主机的IP地址SecurityException 安全性错误,如Applet欲读写文件MalformedURLException URL格式错误,用户定义异常,用户自定义异常主要用来处理用户程序中特定的逻辑运行错误。,异常类的捕获和处理,一、基本概念1. 异常处理机制:主要体现在“抛出异常并“捕获异常这两个层次。2. 抛出异常:当程序执行过程中产生异常时,运行系统将抛出异常类对象(它代表某一异常类型的错误事件)。3. 捕获异常:用户程序或运行

6、系统可以捕获该异常类对象(在函数的调用栈中查找能处理此异常事件的程序为止)并相应地给出处理的方法(代码)。4. 如何捕获异常:采用try、catch、 finally语句块。,异常处理机制结构,在Java程序中,当程序运行过程中发生异常时,采用两种方式处理异常: 1)由Java异常处理机制的预设处理方法来处理; 2)使用Java语言提供的 try-catch-finally语句自行处理异常。,try-catch-finally组合语句用来实现抛出异常和捕获异常的功能。其格式如下:try statements catch (ExceptionType1 ExceptionObject) Exce

7、ption Handling catch(ExceptionType2 ExceptionObject) Exception Handling finally Finally Handling ,其中:(1)try:将可能出现错误的程序代码放在try块中,对try块中的程序代码进行检查,可能会抛出一个或多个异常。因此,try后面可跟一个或多个catch。 (2)catch:此功能是捕获异常,参数ExceptionObject是ExceptionType类的对象,这是由前面的try语句生成的。ExceptionType是Throwable类中的子类,它指出catch语句中所处理的异常类型。cat

8、ch捕获异常的过程中,要将Throwable类中的异常类型和try语句抛出的异常类型进行比较,若相同,则在catch中进行处理。 (3)Finally:是这个组合语句的统一出口,一般用来进行一些善后操作,例如释放资源、关闭文件等。它是可选的部分。,例:在进行两个数的除法运算时,如果被除数为,就会抛出一个ArithmeticException异常,可以使用try和catch语句对这一异常进行处理。,import java.awt.*;import java.applet.*; public class MultiCatch extends Applet public void paint(Gra

9、phics g) int a,b,c; try a=9; b=0; c=a/b; g.drawString(a+/+b+=+c,20,20); catch (ArithmeticException e) g.drawString(出现被除的异常情况,20,40); catch(Exception e) g.drawString(异常类型为+e,20,60); g.drawString(继续执行java程序!,20,80); ,Htm1.html,程序运行结果如图:,异常的抛出,系统自动抛出的异常 程序中出现系统中定义的异常时,可以由系统自动来抛出它。对于在函数定义时采用throws所声明的某个

10、异常类型时,在其函数体中必须使用“throw 异常事件(对象名) 来抛出该种类型的异常事件(即程序员自己抛出程序中定义的自己的异常事件),以便上一级的调用者来捕获并处理它。,在Java语言中,可以使用throw语句和throws语句抛出异常情况。1.throw语句 用来明确地抛出一个异常情况。throw语句的作用是改变执行流程,使程序跳到执行相应的异常情况处理。throw语句的格式如下: throw ThrowableInstance;,使用throw抛出异常的例子:,import java.awt.*;import java.applet.*;public class ThrowDemo e

11、xtends Applet public void paint (Graphics g) try throw new NullPointerException(自编异常); catch (NullPointerException e) g.drawString(发生的异常:+e,20,20); ,2.throws语句 在有些情况下,不需要一个方法本身来处理异常, Throws语句可以把异常向上移交给调用这个方法的方法来处理。 Throws语句的格式如下: type method_name(parameter_list) throws exception_list /方法体 ,import ja

12、va.awt.*;import java.applet.*;public class Throws extends Applet static void throwOne() throws IllegalAccessException throw new IllegalAccessException(自编异常); public void paint(Graphics g) try throwOne(); catch(IllegalAccessException e) g.drawString(发生的异常throws:+e,10,20); ,使用throws抛出异常的例子:,finally语句创

13、建一个代码块,在try/catch语句后执行,不管是否抛出一个异常,系统都将执行finally语句的程序代码。 1.为异常处理提供统一出口 try /常规的代码; catch() /处理异常 finally /不论发生什么异常(或者不发生任何异常),都要执行的部分;,finally,2. 可以在finally语句中进行资源清除工作,如关闭已打开的文件等: try 对文件进行处理的程序; catch(IOException e) /对文件异常进行处理; finally 不论是否发生异常,都关闭文件; 例: finally的使用 finally的使用,public class Demo1stati

14、c int a,b,c;public static void main(String args)trya=100;b=Integer.parseInt(args0);if(b=13) throw(new ArithmeticException();c=a/b;System.out.println(a/b=+c);catch(ArrayIndexOutOfBoundsException e)System.out.println(没有命令行第一个参数);catch(ArithmeticException e)System.out.println(算数运算错误);,异常用法举例,自定义异常类,1. 目的为应用程序中特定错误提供相应的错误提示信息,而不便采用标准的错误信息,同时也可扩充Java系统中的异常类以满足用户的特定的应用需要。 2. 编程要求从系统中的Exception类或其它相关的类来派生(即将用户的异常类作为系统中的子类);声明自己的异常类的成员数据或成员方法,以反映用户自己的错误信息。3. 用途 可以实现在用户程序中声明、捕获和抛出自己的异常类对象,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 其它文档

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