java编程基础-07异常处理

上传人:aa****6 文档编号:54865412 上传时间:2018-09-20 格式:PPT 页数:29 大小:1.43MB
返回 下载 相关 举报
java编程基础-07异常处理_第1页
第1页 / 共29页
java编程基础-07异常处理_第2页
第2页 / 共29页
java编程基础-07异常处理_第3页
第3页 / 共29页
java编程基础-07异常处理_第4页
第4页 / 共29页
java编程基础-07异常处理_第5页
第5页 / 共29页
点击查看更多>>
资源描述

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

1、Java编程基础 异常处理,第七章 异常处理,目标: 介绍Java中的异常处理机制。通过本课的学习,学员应该掌握如下知识: 1)异常有关类的继承关系, 2) Java异常处理机制。 3)关键字finally、throws及throw,教学方法:讲授ppt 上机练习,本章要点,异常简介 异常的定义 异常类的继承关系 检查性异常 非检查性异常 异常处理机制 try、catch、finally语句 throw、throws关键字 自定义异常类,Contents,异常简介,1,异常类的继承关系,2,异常处理机制,3,方法调用的堆栈,4,自定义异常,5,异常简介,异常的定义 运行期间出现的错误,而不是编

2、译时的语法错误 例如, 打开一个不存在的文件 网络连接中断 操作数组越界等,异常简介,异常的定义 示 例 ArrayException.java,public 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

3、,方法调用的堆栈,4,自定义异常,5,异常的分类,异常类的体系结构,可处理,可不处理,异常的分类,异常的分类 示例:CheckException.java 检查性异常(checked exception) 若系统运行时可能产生该类异常,则必须写出相应的处理代码,否则无法通过编译 非RuntimeException异常非检查性异常(unchecked exception) 若系统运行时可能产生该类异常,则不必在程序中声明对该类异常的处理,就可以编译执行 RuntimeException:运行时异常,异常的分类,常见的异常及其分类,异常的分类,常见的异常及其分类,Contents,异常简介,1,异

4、常类的继承关系,2,异常处理机制,3,方法调用的堆栈,4,自定义异常,5,异常处理机制,异常的处理过程 示例:ArrayException.java在Java程序执行过程中如果出现异常事件,系统会发出异常报告,这时系统将生成一个异常类对象,异常类对象封装了异常事件的信息并将其提交给Java运行时系统 Java 中可用于处理异常的两种方式: 自行处理:可能引发异常的语句封入在 try 块内,而处理异常的相应语句则封入在 catch 块内。 回避异常:在方法声明中包含 throws 子句,通知潜在调用者,如果发生了异常,必须由调用者处理。,处理异常,抛出异常,捕获异常,trycatch语句,try

5、catch语句 示例 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表示可能发生

6、异常的语句catch( )内的参数异常类对象的声明catch内的语句是对异常的处理,trycatch语句,trycatch语句 catch块,是用来捕获并处理try块抛出的异常的代码块。没有try块,catch块不能单独存在。我们可以有多个catch块,以捕获不同类型的异常 如果程序抛出多个不同类型的异常,我们需要多个catch()语句来处理。 和特殊异常类相关联的catch()块必须写在和普通异常类相关联的catch()之前。 try和catch( )之间不可以添加任何代码,trycatch语句,trycatch语句示例 Exception_sample_2.java,catch (Arra

7、yIndexOutOfBoundsException e) System.out.println(“Out of Bounds!”); catch (RuntimeException e) System.out.println(“Runtime Exception!”); catch (Exception e) System.out.println(“Exception!”); ,Runtime Exception,Exception,Array Index OutOf Bounds Exception,if caught, do this,if caught, do this,if caug

8、ht, do this,异常处理机制, 练习 以下代码的执行结果是:,答案 :C,finished B.Exception C.编译错误 D. Arithmetic Exception,finally 语句,finally 语句 finally语句放在try catch语句后 fianlly语句中的代码块不管异常是否被捕获总是要执行通常在finally语句中可以进行资源的清除操作,如:关闭打开文件、删除临时文件 对应finally代码中的语句,即使try代码块和catch代码块中使用了return语句退出当前方法或般若break跳出某个循环,相关的finally代码块都有执行。 当try或ca

9、tch代码块中执行了System.exit(0)时,finally代码块中的内容不被执行,finally 语句,finally 语句 示例 Exception_Sample_3.java,catch (ArrayIndexOutOfBoundsException e) System.out.println(“Out of Bounds!”);return; catch (RuntimeException e) System.out.println(“Runtime Exception!”); catch (Exception e) System.out.println(“Exception!”

10、); finallySystem.out.println(“program is running intofinally!”); ,无论是否捕获 异常,系统都 会执行该语句,finally 语句, 练习 以下代码的执行结果是:,答案 :C,BD BCD BDE BCDE,throws关键字,throws关键字 示例 Exception_sample_4.java 如果一个方法中的语句执行时可能生成某种异常,但是并不能确定如何处理,则可以在程序所在的函数声明后,使用throws关键字抛出异常位置:函数参数列表的后面 throws关键字后面,可以跟多个异常,中间用逗号分割 throws关键字抛出的

11、异常,由调用该函数的函数处理。,class ThrowsDemopublic void proc( ) throws IOExceptionSystem.out.println(“inside proc“); ,throws关键字,throws关键字 示例:Exception_Sample_5.java 方法中如果用throws关键字抛出: 非检查性异常:上一级去除异常,直到不抛出异常; 检查性异常 在调用该函数内try-catch,把异常处理掉。那么不往上一级抛出异常,程序正常执行,上一级方法并不知道曾经产生异常。 用throws声明方法抛出异常,不进行处理。谁调用谁负责处理 覆盖方法抛出异

12、常时,可以抛出与被覆盖方法相同的异常或者被覆盖方法异常的子类异常。,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.

13、println(“出错了“); ,Contents,异常简介,1,异常类的继承关系,2,异常处理机制,3,方法调用的堆栈,4,自定义异常,5,methiodThree(),methiodTwo(),方法调用堆栈,后进先出,methiodOne(),main(),抛出异常对象,01 public class Test 02 int arr=new int3; 03 public static void main(String args) 04 new Test().methodOne(); 05 System.out.println(“main“); 06 07 public void meth

14、odOne() 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:

15、 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,方法调用的堆栈,4,自定义异常,5,自定义异常类,自定义异常类 如果Java提供的异常类型不能满足程序设计的需要,我们可以定义自己的异常类型。 用户自定义的异常类应为 Exception 类(或者Exception 类的子类)的子类示例 DevideByMinusException.javaDevideMath.javaTest.java,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

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