java编程基础-07异常处理-zhouxl_第1页
java编程基础-07异常处理-zhouxl_第2页
java编程基础-07异常处理-zhouxl_第3页
java编程基础-07异常处理-zhouxl_第4页
java编程基础-07异常处理-zhouxl_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

3 Sept. 2008 Neusoft ConfidentialJava编程基础 异常处理第七章 异常处理目标 :介绍 Java中的异常处理机制。 通过本课的学习,学员应该掌握如下知识:1)异常有关类的继承关系,2) Java异常处理机制。3)关键字 finally、 throws及 throw 教学方法: 讲授 ppt上机练习本章要点 异常简介 异常的定义 异常类的继承关系 检查性异常 非检查性异常 异常处理机制 try、 catch、 finally语句 throw、 throws关键字 自定义异常类Contents异常简介1异常类的继承关系2异常处理机制3方法调用的堆栈4自定义异常5异常简介 异常的定义 运行期间出现的错误,而不是编译时的语法错误 例如, 打开一个不存在的文件 网络连接中断 操作数组越界等异常简介 异常的定义 示 例 ArrayException.javapublic class excption_sample public static void main(String args )int i = 0;String greetings = “Hello World“,“Hello Dingdang“,“Hello Kitty“;while(i4)System.out.println(greetingsi);i+;数组越界异常Contents异常简介1异常类的继承关系2异常处理机制3方法调用的堆栈4自定义异常5异常的分类 异常类的体系结构可处理,可不处理异常的分类 异常的分类 示例: CheckException.java 检查性异常( checked exception) 若系统运行时可能产生该类异常,则必须写出相应的处理代码,否则无法通过编译 非 RuntimeException异常 非检查性异常( unchecked exception) 若系统运行时可能产生该类异常,则不必在程序中声明对该类异常的处理,就可以编译执行RuntimeException:运行时异常异常的分类 常见的异常及其分类非检查性异常 说明RuntimeException java.lang包中多数异常的基类 ArithmeticException 算术错误,如除以 0 IllegalArgumentException 方法收到非法参数 ArrayIndexOutOfBoundsException 数组下标出界 NullPointerException 试图访问 null 对象引用 异常的分类 常见的异常及其分类检查性异常 说明ClassNotFoundException 无法找到想要创建对象的类文件IOException I/O 异常的根类 FileNotFoundException 不能找到文件 EOFException 文件结束 IllegalAccessException 对类的访问被拒绝 NoSuchMethodException 请求的方法不存在 InterruptedException 线程中断 Contents异常简介1异常类的继承关系2异常处理机制3方法调用的堆栈4自定义异常5异常处理机制 异常的处理过程 示例: ArrayException.java 在 Java程序执行过程中如果出现异常事件,系统会发出异常报告,这时系统将生成一个异常类对象,异常类对象封装了异常事件的信息并将其提交给 Java运行时系统 Java 中可用于处理异常的两种方式: 自行处理:可能引发异常的语句封入在 try 块内,而处理异常的相应语句则封入在 catch 块内。 回避异常:在方法声明中包含 throws 子句,通知潜在调用者,如果发生了异常,必须由调用者处理。处理异常抛出异常 捕获异 常trycatch 语句 trycatch 语句 示例 Exception_sample_1.java public class excption_sample public static void main(String args )int i = 0;String greetings = “Hello World“,“Hello Dingdang“,“Hello Kitty“;try while(i4)System.out.println(greetingsi);i+;catch(ArrayIndexOutOfBoundsException e)System.out.println(“数组越界异常 ”); try表示可能发生异常的语句 catch( )内的参数异常类对象的声明 catch内的语句是对异常的处理trycatch 语句 trycatch 语句 catch块,是用来捕获并处理 try块抛出的异常的代码块。没有 try块, catch块不能单独存在。我们可以有多个 catch块,以捕获不同类型的异常 如果程序抛出多个不同类型的异常,我们需要多个 catch()语句来处理。 和特殊异常类相关联的 catch()块必须写在和普通异常类相关联的catch()之前。 try 和 catch( ) 之间不可以添加任何代码trycatch 语句 trycatch 语句示例 Exception_sample_2.javacatch (ArrayIndexOutOfBoundsException e) System.out.println(“Out of Bounds!”); catch (RuntimeException e) System.out.println(“Runtime Exception!”);catch (Exception e) System.out.println(“Exception!”); Runtime ExceptionExceptionArray Index OutOf Bounds Exceptionif caught, do thisif caught, do thisif caught, do this异常处理机制 练习 以下代码的执行结果是:答案 : CA. finished B.Exception C.编译错误 D. Arithmetic Exceptionfinally 语句 finally 语句 finally语句放在 try catch 语句后 fianlly语句中的代码块不管异常是否被捕获总是要执行 通常在 finally语句中可以进行资源的清除操作,如:关闭打开文件、删除临时文件 对应 finally代码中的语句,即使 try代码块和 catch代码块中使用了return语句退出当前方法或般若 break跳出某个循环,相关的 finally代码块都有执行。 当 try或 catch代码块中执行了 System.exit(0)时, finally代码块中的内容不被执行finally 语句 finally 语句 示例 Exception_Sample_3.javacatch (ArrayIndexOutOfBoundsException e) System.out.println(“Out of Bounds!”);return;catch (RuntimeException e) System.out.println(“Runtime Exception!”);catch (Exception e) System.out.println(“Exception!”); finallySystem.out.println(“program is running intofinally!”);无论是否捕获异常,系统都会执行该语句finally 语句 练习 以下代码的执行结果是:答案 : CA. BDB. BCDC. BDED. BCDEthrows关键字 throws关键字 示例 Exception_sample_4.java 如果一个方法中的语句执行时可能生成某种异常,但是并不能确定如何处理,则可以在程序所在的函数声明后,使用 throws关键字抛出异常 位置:函数参数列表的后面 throws关键字后面,可以跟多个异常,中间用逗号分割 throws关键字抛出的异常,由调用该函数的函数处理。class ThrowsDemopublic void proc( ) throws IOExceptionSystem.out.println(“inside proc“); throws关键字 throws关键字 示例: Exception_Sample_5.java 方法中如果用 throws关键字抛出: 非检查性异常:上一级去除异常,直到不抛出异常; 检查性异常p在调用该函数内 try-catch,把异常处理掉。那么不往上一级抛出异常,程序正常执行,上一级方法并不知道曾经产生异常。p用 throws声明方法抛出异常,不进行处理。谁调用谁负责处理p覆盖方法抛出异常时,可以抛出与被覆盖方法相同的异常或者被覆盖方法异常的子类异常。throw语句 throw语句 异常是通过关键字 throw 抛出, 程序可以用 throw语句引发明确的异常。如: throw语句用在方法体内 ,表示抛出异常 ,由方法体内的语句处理。不能单独使用,要么和 try catch 一起使用,要么和 throws一起使用。 throw语句的操作数一定是 Throwable类类型或 Throwable子类类型的一个对象void doA() throws Exception1 try catch(Exception1 e) throw e; catch(Exception2 e) System.out.println(“出错了 “); Contents异常简介1异常类的继承关系2异常处理机制3方法调用的堆栈4自定义异常5methiodThree()methiodTwo()方法调用堆栈 后进先出methiodOne()main()抛出异常对象01 public class Test02 int arr=new int3;03 public static void main(String args)04 new Test().methodOne();05 System.out.println(“main“);06 07 public void methodOne()08 methodTwo();09 System.out.println(“One“);10 11 public void methodTwo()12 methodThree();13 System.out.println(“Two“);14 15 public void methodThree()16 System.out.println(arr3);17 System.out.println(“Three“);18 19 Exception in thread “main“ java.lang.ArrayIndexOutOfBoundsException: 5at Sample.methodThree(Sample.java:17)at Sample.methodTwo(Sample.java:13)at Sample.methodOne(Sample.java:9)at Sample.main(Sample.java:5)Press any key to continue.Contents异常简介1异常类的继承关系2异常处理机制3方法调用的

温馨提示

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

评论

0/150

提交评论