【教学课件】第10章异常处理.ppt

上传人:牧羊曲112 文档编号:5679213 上传时间:2023-08-09 格式:PPT 页数:44 大小:482.47KB
返回 下载 相关 举报
【教学课件】第10章异常处理.ppt_第1页
第1页 / 共44页
【教学课件】第10章异常处理.ppt_第2页
第2页 / 共44页
【教学课件】第10章异常处理.ppt_第3页
第3页 / 共44页
【教学课件】第10章异常处理.ppt_第4页
第4页 / 共44页
【教学课件】第10章异常处理.ppt_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《【教学课件】第10章异常处理.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第10章异常处理.ppt(44页珍藏版)》请在三一办公上搜索。

1、第10章 异常处理,本章要点,了解异常的概念掌握捕捉异常的方法了解Java中常见的异常掌握自定义异常的方法了解如何在方法中抛出异常了解运行时异常种类了解异常处理的使用原则,第10章 异常处理,1、异常概述2、异常分类3、获取异常信息4、处理异常5、抛出异常6、自定义异常7、异常的使用原则,主要内容,10.1 异常概述,假设一辆轿车发生了故障,可能是某个零件发生了问题,也可能是没有油了如果是由于零件问题,只需要更换零件就可以解决;如果是没有油了,只需要加满油就可以正常行驶了。程序中异常与此类似,就对程序中可能发生异常语句进行处理,使程序能够正常执行。,10.1 异常概述,在程序开发过程中,可能存

2、在各种错误,有些错误是可以必免的,而有些错误却是意想不到的,在Java中把这些可能发生的错误称为异常。图10-1说明了异常类的继承关系。,10.1 异常概述,10.2 异常分类,10.2.1 可控式异常10.2.2 运行时异常,10.2.1 可控式异常,在Java中把那些可以预知的错误,例如从文件中读取数据,对数据库进行操作等,在程序编译时就能对程序中可能存在的错误进行处理,并给出具体的错误信息,我们把这些错误称为可控式异常。,10.2.1 可控式异常,表10-1 常见可控式异常及说明,10.2.1 可控式异常,【例10-1】在main()方法中使用Class类的forName()方法加载一个

3、不存在的类。,try Class.forName);catch(ClassNotFoundException e)e.printStackTrace();,10.2.2 运行时异常,在Java中有些错误是不能被编译器检测到的在进行除法运算时,除数为零;试图把一个不是由数字组成的字符串使用Integer类的parseInt()方法转换为整数。Java的编译器是检测不到的,因而能够正常编译,但是在运行时就会发生异常,这些异常称为运行时异常。,表10-2 常见运行时异常及说明,10.2.2 运行时异常,10.2.2 运行时异常,【例10-2】在main()方法中创建一个长度为5的数组,并为其第6个元

4、素赋值。,int array=new int5;array5=6;,10.3 获取异常信息,获取异常信息就好比工厂里某个线路出现故障停电了,电工要从线路中找出现故障的原因,找到了出现故障的原因,就象程序中获取到了异常信息。在Java中类是所有异常类的超类,该类提供了获得异常信息的方法。,表10-3 获取异常信息的方法及说明,10.3 获取异常信息,10.3 获取异常信息,【例10-3】使用上述方法输出进行除0运算异常。,try int z=100/0;catch(Exception ex)ex.printStackTrace();System.out.println(ex.getMessage

5、();System.out.println(ex.getLocalizedMessage();System.out.println(ex.toString();,10.4 处理异常,10.4.1 使用try-catch处理异常10.4.2 使用try-catch-finally处理异常10.4.3 使用try-finally处理异常,10.4.1 使用try-catch处理异常,对于程序中可能发生异常的语句,可以将其添加到try-catch语句块中,这样当程序发生异常时,就可以对其进行相应的处理。try 需要正常执行的语句 catch(Exception ex)对异常进行处理的语句,10.4.

6、1 使用try-catch处理异常,说明:try和catch是进行异常处理的关键字;try和catch之间的大括号内是程序需要正常执行但又可能发生异常的语句;catch后的小括号内是程序需要处理的异常类型;catch后的大括号内是对程序发生的异常进行处理的语句。,int a=6;int b=0;try/try监控区域 if(b=0)throw new ArithmeticException();System.out.println(a/b的值是:+a/b);catch(ArithmeticException e)/catch捕捉异常 System.out.println(出现异常,变量b不能为

7、0);System.out.println(程序正常结束。);,int intArray=new int3;try for(int i=0;i=intArray.length;i+)intArrayi=i;System.out.println(intArrayi/(i-3);catch(ArithmeticException e)System.out.println(除数为0异常。);catch(ArrayIndexOutOfBoundsException e)System.out.println(intArray数组下标越界异常。);System.out.println(程序正常结束。);,

8、10.4.2 使用try-catch-finally,try-catch-finally语句块的语法格式如下:try 需要执行的语句 catch(Exception ex)对异常进行处理的语句 finally 一定会被处理的语句,10.4.2 使用try-catch-finally,说明:try、catch和finally是进行异常处理关键字try、catch后面的大小括号的作用同try-catch语句。finally后大括号内的语句,不管程序是否发生异常都要执行,因此finally语句块通常用于执行垃圾回收、释放资源等操作。,int i=0;String greetings=Hello wo

9、rld!,Hello World!,HELLO WORLD!;while(i 4)try System.out.println(greetingsi+);catch(ArrayIndexOutOfBoundsException e)System.out.println(数组下标越界异常);finally System.out.println(-);,10.4.3 使用try-finally处理异常,对于程序中可能发生异常的语句,可以将其添加到try-finally语句块中,这样当程序发生异常时,就可以在finally语句块中对其进行相应的处理,另外当程序没有发生异常时,执行完try和final

10、ly之间的语句后,也将执行finally语句块中的代码,因此可以在finally语句块中放置一些必须执行的代码,比如释放内存资源的代码等等。,10.4.3 使用try-finally处理异常,try-finally语句块的语法格式如下:try 需要执行的语句 finally 一定会被处理的语句,图10-1 try、catch、finally语句块的执行,10.5 抛出异常,10.5.1 使用throws声明抛出异常10.5.2 使用throw语句抛出异常,10.5.1 使用throws声明抛出异常,throws通常用于方法声明,当方法中可能存在异常,却不想在方法中对异常进行处理时,就可以在声明

11、方法时使用throws声明抛出的异常,然后在调用该方法的其他方法中对异常进行处理(如使用try-catch语句或使用throws声明抛出的异常)。,10.5.1 使用throws声明抛出异常,如果需要使用throws声明抛出多个异常,各异常之间要用逗号分隔。数据类型 方法名(形参列表)throws 异常类1,异常类2,异常类n 方法体;,methodname throws Exception1,Exception2,.,ExceptionN,10.5.1 使用throws声明抛出异常,说明:数据类型是基本数据类型或对象类型;方法名是Java语言的合法标识符;throws是抛出异常的关键字;异常

12、类是Java的异常类或自定义异常类;方法体是该方法需要执行的语句。,static void pop()throws NegativeArraySizeException int arr=new int-3;/创建数组public static void main(String args)try/try语句处理异常信息pop();/调用pop()方法 catch(NegativeArraySizeException e)System.out.println(pop()方法抛出的异常);,10.5.2 使用throw语句抛出异常,在通常情况下,程序发生错误时系统会自动抛出异常,而有时希望程序自行抛

13、出异常,可以使用throw语句来实现。throw语句通常用在方法中,在程序中自行抛出异常,使用throw语句抛出的是异常类的实例,通常与if语句一起使用。,10.5.2 使用throw语句抛出异常,throw语句的语法格式如下:throw new Exception(对异常的说明);其中throw是抛出异常的关键字;Exception是异常类(通常使用自定义异常类)。,10.5.2 使用throw语句抛出异常,【例10-7】计算圆的面积。设定圆的半径不能小于20,小于则抛出异常并给出提示信息。,ThrowDemo ex=new ThrowDemo();try puteArea(10);/调用方

14、法 catch(Exception e)System.out.println(e.getMessage();,private static final double PI=3.14;/圆周率public void computeArea(double r)throws Exception if(r=20.0)/使用throw语句抛出异常 throw new Exception(程序异常:n半径为:+r+n半径不能小于20。);else double circleArea=PI*r*r;/计算圆的面积 System.out.println(半径是+r+的圆面积是:+circleArea);,10

15、.6 自定义异常,10.6.1 创建自定义异常类10.6.2 使用自定义异常类,10.6.1 创建自定义异常类,创建自定义的异常类需要继承自Exception类,并提供含有一个String类型形参的构造方法,该形参就是异常的描述信息,可以通过getMessage()方法获得。例如:,public class NewException extends Exception public NewException(String s)super(s);,10.6.2 使用自定义异常类,创建完自定义异常类,我们就可以在程序中使用自定义异常类了。使用自定义异常类可以通过throw语句抛出异常,接下来通过实

16、例来说明自定义异常类的使用,10.6.2 使用自定义异常类,【例10-8】在项目中自定义异常类,然后编写测试类。(1)编写自定义异常类NewException,该类继承自Exception类。在构造方法中,输出异常信息。(2)编写NewExceptionTest类,在showArea()方法中抛出异常,在main()方法中处理异常。,public class NewException extends Exception private static final long serialVersionUID=-400794805034166270L public NewException(Doub

17、le r)(异常:半径不能小于20);(圆的半径为:+r);,public class NewExceptionTest public static void showArea(double r)throws NewException if(r=20)throw new NewException(r);/抛出异常 double area=3.14*r*r;(圆的面积是:+area);,public static void main(String args)try showArea(10);catch(NewException ex)System.out.println(ex);,10.7 异常

18、的使用原则,不要过多的使用异常,这样会增加系统的负担。在方法中使用try-catch捕获异常时,要对异常做出处理。try-catch语句块的范围不要太大,这样不利于对异常的分析。一个方法被覆盖时,覆盖它的方法必须抛出相同的异常或子异常。,1.改错public class text public static void main(String args)myMethod();public void myMethod()throw MyException throws(new MyException);class MyException public String toString()return(自定义异常类);2.设计一个一元二次方程类,并为这个类添加异常处理。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号