欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    七章节异常处理.ppt

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

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

    七章节异常处理.ppt

    1,第七章异常处理,主讲教师:张思民,2,习题55,3,习题6-3,4,一个出错的程序,加:A=b;,5,第7章 Java语言中的异常,处理有bug和错误的数据是绝对必要的捕捉错误的最佳时刻在程序的编译期。有些问题只能在程序的执行期间来解决:Java提供异常处理机制来解决这些程序执行中可能出现的问题。,6,第7章 Java语言中的异常,本章讲述:如何在程序中抛出、捕获和处理异常;如何定制自己的异常类。,7,7.1 异常的概念与分类,Java程序运行中可能遇到的错误分为两类,一类是非致命性的,通过某种修正后程序还能继续执行。称作异常(Exception)。例如:试图打开一个不存在的文件,除数为零,对负数开平方根,空指针访问,网络连接中断等。另一类是致命性的,即程序遇到了非常严重的不正常状态,不能简单地恢复,称作错误(Error)。例如:JVM系统内部错误、资源耗尽等严重情况,8,7.1 异常的概念与分类,Java提供了面向对象的处理异常的机制。当程序中发生异常时,称该程序产生了一个异常事件,相应地生成异常对象。异常事件的产生:可能由正在运行的方法生成,也可能由JVM生成。异常事件包括:所发生的异常事件的类型以及异常发生时程序的运行状态。生成的异常对象传递给Java运行时系统。异常的产生和提交称为抛出(throw)。异常发生时,Java运行时系统会寻找该异常相应的处理代码,并把异常对象提交给该方法处理,这一过程称为捕获(catch)。,9,7.1 异常的概念与分类,10,7.1 异常的概念与分类,Java中的异常分为两类:派生自RuntimeException的异常及非派生自RuntimeException的异常。通常的规则如下:l产生一个RuntimeException的原因是编程错误。l其他任何异常的出现是因为你的程序碰到了意外情况,例如一个I/O错误等。例如:一个错误的造型转换。一个越界数组访问。一个空指针访问。,11,7.1 异常的概念与分类,下面几种情况则导致非继承自RuntimeException的异常:l试图读取一个文件结尾后的数据。l试图打开一个错误的URL。l试图根据一个根本不代表任何已存在类的字符串来找到一个Class对象。事实上,你应该尽量避免你的程序出现派生自RuntimeException的异常。例如:你可以通过判断数组下标是否超出数组边界来避免出现ArrayOutOfBoundException。而如果在使用一个变量之前首先判断它是否为null,则NullPointerException异常就可以避免。,12,7.1 异常的概念与分类,常见的异常:ArithmeticException 整数除法中,如果除数为0,则发生该类异常,如下面的表达式将引发ArithmeticException异常:int i=12/0;NullPointerException 如果一个对象还没有被实例化,那么访问该对象或调用他的方法将导致NullPointerException异常,例如:image img=new image 4;System.out.println(img0.toString();,13,7.1 异常的概念与分类,NegativeArraySizeException 按常规,数组元素个数应是一个大于等于0的整数。创建数组时,如果元素个数是负数,则会引发NegativeArraySizeException异常。ArrayIndexOutOfBoundException Java把数组看作是对象,并用length变量记录数组的大小,访问数组元素时,运行时环境根据length值检查下标的大小。如果数组下标值越界,则会导致ArrayIndexOutOfBoundException异常。ArrayStoreException:程序试图在数组中存取错误的数据类型。FileNotFoundException:试图存取一个并不存在的文件。,14,7.1 异常的概念与分类,SecurityException 该类异常一般在浏览器内抛出。若Applet试图进行下述操作,则由SecurityManager类抛出此异常:l访问本地文件。l打开一个套接口,而不是返回到提供Applet的主机。l在运行时环境中运行另一个程序。除此之外,较常见的异常还有:IOException:通常的I/O错误。SQLException:执行 SQL时出现错误。,15,7.2.1 try,catch 和finally语句,通常我们希望自己来处理“异常”并继续运行。可以使用try块将可能抛出异常的代码段括起来。紧跟在try程序后面,应包含catch子句来指定你想要捕捉的“异常”的类型以及相应的处理代码。,16,7.2.1 try,catch 和finally语句,ExceptionType1,ExceptionTypeN是有可能会产生的“异常”的类型。程序运行时,会根据发生异常所属的类,找到相应的catch语句,然后执行其后的语句序列。提示:如果一个异常类和其子类都有可能出现的话,应把处理子类的catch语句放在前面,否则将永远不会到达子类。,17,7.2.1 try,catch 和finally语句,当一个异常被抛出时,程序的执行就不再是线性的,跳过某些行,甚至会由于没有与之匹配的catch子句而过早地返回。有时确保一段代码不管发生什么异常都被执行到是必要的,关键词finally就是用来标识这样一段代码的。除非发生导致程序崩溃的错误,否则不论异常是否被捕获,finally程序块都一定会被执行。将公共处理程序段放到finally块中是个好习惯。,18,7.2.2 try语句的嵌套,可以在一个成员函数调用的外面写一个try语句,在这个成员函数内部,写另一个try语句保护其他代码。每当遇到一个try语句,“异常”的框架就放到堆栈上面,直到所有的try语句都完成。如果下一级的try语句没有对某种“异常”进行处理,堆栈就会展开,直到遇到有处理这种“异常”的try语句。,19,例7-2,20,7.2.3 throw语句,throw语句用来明确地抛出一个“异常”。首先,你必须得到一个Throwable的实例的引用(reference),通过参数传到catch子句,或者用new操作符来创建一个。下面是throw语句的通常形式。throw ThrowableInstance;程序会在throw语句后立即终止,它后面的语句执行不到,然后在包含它的所有try块中从里向外寻找含有与其匹配的catch子句的try块。,21,例7-3一个含有throw语句的例子,22,7.2.4 throws语句,如果一个Java方法遇到了它不能够处理的情况,那么它可以抛出一个异常:一个方法不仅告诉Java编译器它能返回什么值,还可以告诉编译器它有可能产生什么错误。例如,试图读取文件的方法可能会遇到文件不存在的情况,那么该方法需要通过抛出IOException通知编译器。,23,7.2.4 throws语句,Java中使用 throws 语句实现该功能,throws 语句的语法如下:type MethodName(args)throws ExceptionType/方法实现代码其中:type为方法的返回值类型,MethodName是方法名,args是方法的参数表,24,例7-4 ExceptionDemo4.java,25,7.3 自定义异常,有时候你会发现标准的异常类可能不能准确地描述你所遇到的问题。在这种情况下,你需要创建自己的异常类。通过从Exception类或者他的子类派生一个子类,你可以创建你自己的异常类。,26,7.3 自定义异常,在程序中发生异常情况时,程序员可以抛出(throw)一个自定义异常类的实例,将其放到异常队列中去,并激活Java的异常处理机制。例如,下面的程序中,我们定义了一个继承自Exception类的异常类MyException,在compute方法中,如果参数a大于10则抛出一个MyException异常实例,27,例 7-5,程序运行如下:Called compute(1.)Normal exitCalled compute(20.)Exception caughtMyException20,28,习题,7.1 什么是异常?7.2 简述Java是如何处理异常的?7.3 请说明finally语句的用途。,29,习题,7.4 当程序重新抛出一个新的异常时,原有异常所包含的数据也会随之丢失,例如:trycatch(OldException e)throw new NewException(“new exception”);此时,OldException所包含的数据会遗失。为了避免这种情况,我们可将原有的异常传入新的异常中,这称为chained exception(继承Exception),如:throw new NewException(“new exception”,e);请生成ChainedException来带到这个目的。,

    注意事项

    本文(七章节异常处理.ppt)为本站会员(sccc)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开