欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    第7章 异常精选PPT.ppt

    • 资源ID:49396677       资源大小:1.71MB        全文页数:24页
    • 资源格式: PPT        下载积分:18金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要18金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第7章 异常精选PPT.ppt

    第1页,本讲稿共24页Java EE基础教程07 十月 20222 异常是程序运行过程中产生的错误。比如在进行除法运算时,如果除数为0,则运行时Java会自动抛出一个算术异常,它会中断程序的正常运行,如果不对它进行处理,有时会产生严重的后果。例如:在转账过程中,将钱从一个账户转到另一个账户时,如果钱已经从一个账户转出,在转到另一个账户的过程中出现异常,程序被迫中止。此时,用户就会损失这笔钱。第2页,本讲稿共24页Java EE基础教程07 十月 202237.1 异常的处理机制7.1 异常的处理机制 在Java语言中,通过异常处理机制为程序提供错误处理的能力。根据这个处理机制,对程序运行时可能遇到的异常情况,预先提供一些处理的方法。在程序执行代码的时候,一旦发生异常,程序会根据预定的处理方法对异常进行处理,异常处理完毕后,程序继续运行。Java异常处理机制通过5个关键字进行控制:try、catch、throw、throws和finally。下面阐述系统如何通过这5个关键字对异常进行处理。程序将必须监控异常的语句包含在try块中。如果在try块中发生异常,程序将引发一个异常,通过使用catch关键字,系统捕获异常,并将处理该异常的代码写在catch块中。在finally块中,可以指定在程序结束之前必须执行的代码,无论异常是否发生,这段代码一定会被执行。异常的引发可以有自动和手动两种方法,如果需要手动产生异常,可以通过使用throw关键字来实现。throws关键字出现在方法的声明中,标识调用该方法可能抛出的各种异常。返回第3页,本讲稿共24页Java EE基础教程07 十月 20224 7.2.1 Java内置异常 为了处理一些常见的异常,Java语言中提供了一些内置的异常类供我们使用。这些类都继承自java.lang.Throwable类,而Throwable类又继承自Object类。Throwable类有两个重要的子类:Error类和Exception类。它们分别用来处理两种类型的异常。Error类及其子类通常用来描述Java运行时的内部错误,比如:在读取磁盘上的文件时,磁盘的扇区出现了损坏;从软盘中读取文件数据时,软驱中没有放入软盘。Error类又称为致命异常类,该类表示的异常是比较严重的异常,一旦发生该类型的异常,通过修改程序代码是不能恢复程序的正常运行的。在一般情况下,发生该异常后,程序应该马上终止。7.2 异常的处理返回第4页,本讲稿共24页Java EE基础教程07 十月 20225Exception类及其子类代表另一种类型的异常。该类用于用户程序可以捕获的异常情况。通过捕获和处理产生的异常,可以恢复程序的正常运行。该类有一个重要的子类RuntimeException,又称为运行时异常。在程序中出现除数为0的运算、数组下标越界等情况时,都会引发该类型的异常。第5页,本讲稿共24页Java EE基础教程07 十月 20226 Java语言中规定:只有Throwable、Error、Exception类及其派生类的实例,Java运行时系统才将它识别为系统异常。表7-1中列出了一些常用的异常类及其用途。下面简单介绍常见的异常类,其他异常类将在后面的章节中陆续介绍。1)ArithmeticException类该类用于描述算术异常,比如当除数为0时,会抛出该异常。int result=8/0;/除数为0,抛出ArithmeticException异常2)NullPointerException类用来描述空指针异常,当引用的对象是null时,如果试图通过“.”操作符访问该对象的成员时,会抛出该异常。String str=null;int len=str.length();/因为str为null对象,不能调用它的length()方法。第6页,本讲稿共24页Java EE基础教程07 十月 202273)ArrayIndexOutOfBoundException类 该类用来描述数组下标越界时出现的异常。float arr=new float4;arr4=9;/数组的最大下标是3,而此处的4超过了该值4)NubmerFormatException类 该类用于描述字符串转换为数字时的异常。String str=”23U”;double d=Double.parseDouble(str);/“23U”不能转换为double类型的数 第7页,本讲稿共24页Java EE基础教程07 十月 202287.2.2 try和catch语句 在Java语言中,对容易引发异常的代码,可通过trycatch语句捕获。在try语句块中编写可能引发异常的代码,然后在catch语句块中捕获这些异常,并进行相应的处理。trycatch语句块的语法格式如下:try可能产生异常的代码catch(异常类1 异常对象1)异常处理代码段1catch(异常类2 异常对象2)异常处理代码段2catch(异常类n 异常对象n)异常处理代码段n 第8页,本讲稿共24页Java EE基础教程07 十月 20229try语句块中的代码执行后可能同时产生多种异常,程序捕获哪一种类型的异常,是由catch语句中的“异常类”参数指定。catch语句类似于方法的声明,包含一个异常类型和该类型的一个对象,通过在catch块中调用该对象的方法可以获取该异常的详细信息。代码中的每个catch语句块都用来捕获一种类型的异常。如果try语句块中的代码执行时发生异常,则会由上而下依次查找能捕获该异常的catch语句块,并执行该catch语句块中的代码。第9页,本讲稿共24页Java EE基础教程07 十月 202210 例7-1 根据输入的总分和人数,计算平均成绩程序清单:ch07ComputeAvg.javaimport java.util.InputMismatchException;import java.util.Scanner;public class ComputeAvg public static void main(String args)int score,num;double avg;Scanner in=new Scanner(System.in);trySystem.out.println(请输入总分:);score=in.nextInt();/ASystem.out.println(请输入人数:);num=in.nextInt();/Bavg=score/num;/CSystem.out.println(平均成绩为:+avg);catch(InputMismatchException e1)System.out.println(输入不是数字!);catch(ArithmeticException e2)System.out.println(人数不能为0);catch(Exception e3)System.out.println(其他异常:);第10页,本讲稿共24页Java EE基础教程07 十月 202211以上介绍了如何使用trycatch结构实现异常处理。在使用该结构时,还必须注意以下几点:1)catch块一定要与try块一起使用,不能够单独使用catch块。2)一个try块可以有多个catch块。但是,多个catch块的排列顺序必须是从特殊到一般,最后一个一般是Exception类。3)如果不发生异常,catch块永远不会被执行。4)一旦某个catch块被执行后,其他catch块都会被忽略。5)trycatch结构可以嵌套使用第11页,本讲稿共24页Java EE基础教程07 十月 2022127.2.3 throw语句 前面介绍了如何获取并处理被Java运行时系统抛出的异常。那么,用户可以显式地在程序中手动引发异常吗?答案是可以的,通过使用Java异常处理机制提供的throw关键字主动地抛出异常。throw语句的语法结构如下:throw 异常类的实例程序 在执行到throw语句时,首先检查它所在层的try块,是否有一个catch子句与该实例的类型匹配。如果找到匹配的,则程序的控制权转移到该语句块。如果没有找到匹配的,再检查上一层的catch语句块,直到执行到最外层的catch块。如果一直找不到相应的异常处理代码,则程序的控制权将交还给系统,程序将停止运行。第12页,本讲稿共24页Java EE基础教程07 十月 202213例7-2 定义一个方法check(),检查输入的商品数是否大于0,如果小于0就抛出异常。然后在主函数中调用该方法。程序清单:ch07checkDemo.javaimport java.util.Scanner;public class checkDemo public static void check()Scanner in=new Scanner(System.in);System.out.println(请输入商品的书目:);int num=in.nextInt();if(num0)throw new NumberFormatException(商品书目不能小于0!);elseSystem.out.println(商品数目为:+num);第13页,本讲稿共24页Java EE基础教程07 十月 202214public static void main(String args)try check();catch(Exception e)System.out.println(异常:+e.getMessage();程序的运行结果如下。请输入商品的书目:-3异常:商品书目不能小于0!第14页,本讲稿共24页Java EE基础教程07 十月 202215 7.2.4 throws语句 若某个方法可能会产生异常,但不想在当前方法中处理该异常,那么可以将该异常抛出,然后在调用该方法的代码中捕获并处理该异常。为了实现该功能,可以使用Java语言提供的throws关键字实现该功能。throws关键字写在方法声明的后面,用来指定该方法可能抛出的异常,多个异常之间用逗号隔开。例7-3 定义一个方法test(),该方法可能抛出两种类型的异常,然后在主函数中调用该方法,并处理可能出现的这些异常。第15页,本讲稿共24页Java EE基础教程07 十月 202216程序清单:ch07throwsDemo.javaimport java.io.IOException;import java.util.Scanner;public class throwsDemo public static void test()throws NullPointerException,IOExceptionSystem.out.println(请输入一个数字(0,1):);Scanner in=new Scanner(System.in);int flag=in.nextInt();if(flag=1)throw new NullPointerException();第16页,本讲稿共24页Java EE基础教程07 十月 202217elsethrow new IOException();public static void main(String args)try test();catch(NullPointerException e)System.out.println(系统抛出了+e.getClass()+类型的异常);catch(IOException e)System.out.println(系统抛出了+e.getClass()+类型的异常);程序运行后,如果输入“1”,方法test()抛出了NullPointerException类型的异常,程序的输出结果如下所示:请输入一个数字(0,1):1系统抛出了class java.lang.NullPointerException类型的异常 第17页,本讲稿共24页Java EE基础教程07 十月 2022187.2.5 finally语句 在编写异常处理代码时,无论try块中是否有异常抛出,都有一些工作必须在try语句正常结束或者出现异常后进行的,比如对try块中所调用资源的回收工作。finally语句块可以包含一些无论程序是否正常运行都必须执行的一些语句。该子句是可选的,但是每个try语句块应该至少有一个catch语句块或finally语句块。第18页,本讲稿共24页Java EE基础教程07 十月 2022197.3 自定义异常 通常使用Java内置的异常类型可以描述在编写程序时出现的大部分异常情况,但根据需要,有时候需要创建自己的异常类,用来描述编程过程中遇到的一些特殊情况。下面就来介绍一下如何创建和使用自定义的异常类。自定义异常类时,它必须派生自Throwable类及其子类。一般情况下,用户自定义异常类应该继承自Exception类。这样,可以使用Exception类中的所有方法。在程序中定义和使用自定义异常类,一般可分为以下几个步骤:返回第19页,本讲稿共24页Java EE基础教程07 十月 202220v(1)创建派生自)创建派生自Exception类或其子类的自定义异常类类或其子类的自定义异常类v(2)在方法中通过)在方法中通过throw语句抛出自定义的异常类对象语句抛出自定义的异常类对象v(3)如果在当前抛出异常的方法中处理异常,可以使用)如果在当前抛出异常的方法中处理异常,可以使用trycatchv 语句块捕获并处理该异常;否则在方法声明处通过语句块捕获并处理该异常;否则在方法声明处通过throws语语句句v 指明方法可能抛出的异常。指明方法可能抛出的异常。v(4)在调用由)在调用由throws语句声明的方法时,在调用方法的代码中,语句声明的方法时,在调用方法的代码中,捕获捕获v 并处理自定义的异常类对象。并处理自定义的异常类对象。第20页,本讲稿共24页Java EE基础教程07 十月 202221 例7-4 创建一个自定义异常类,个性化处理除数为0的情况。程序清单:ch07ExceptionTest.javaimport java.util.Scanner;class MyException extends Exception/继承Exception类private String myString;public MyException(String myString)this.myString=myString;public String getMyString()return myString;Overridepublic String toString()/重写了类的方法return myString;public class ExceptionTest public static void main(String args)double i,j;Scanner scan=new Scanner(System.in);System.out.println(请输入分子:);i=scan.nextDouble();第21页,本讲稿共24页Java EE基础教程07 十月 202222System.out.println(请输入分母);j=scan.nextDouble();try if(j=0)/判断分母的值 throw new MyException(除数不能零!);/AelseSystem.out.println(分数值为:+i+/+j+=+(i/j);catch(MyException e)System.out.println(e);第22页,本讲稿共24页Java EE基础教程07 十月 202223该程序代码定义了一个继承Exception类的自定义异常类MyException。在这个类中,定义了一个字符串成员,重写了toString()方法,个性化输出自定义的错误信息。然后在测试类中输入了两个数,如果第二个数为0,则在代码行A处抛出带有自定义错误信息的异常对象,然后在catch块中对上述抛出异常。程序的运行结果如下:请输入分子:3请输入分母0除数不能零!第23页,本讲稿共24页Java EE基础教程07 十月 202224The End第24页,本讲稿共24页

    注意事项

    本文(第7章 异常精选PPT.ppt)为本站会员(石***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开