电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

清华面向对象程序设计:第06章

27页
  • 卖家[上传人]:tia****nde
  • 文档编号:70832786
  • 上传时间:2019-01-18
  • 文档格式:PPT
  • 文档大小:399.31KB
  • / 27 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、第6章,异常处理,6.1 异常概述,为了保证程序的正确执行,准确地检测到程序运 行过程中可能出现的各种异常,并进行有效地控制 是十分关键的。 传统异常处理: 1处理异常的代码量大 2影响程序的可读性 3缺乏异常处理的规范性,6.1.1 异常的概念 影响程序正常运行的主要原因来自两个方面: 一方面是运行程序的系统出现了异常。例如,系统 软、硬件发生的故障,资源短缺等;另一方面是程 序本身存在的问题。例如,语法错误、逻辑错误和 运行错误等。 在Java语言中,所说的异常是指那些影响程序 正常运行的错误,而并不包含导致程序运行结果不 正确的那些逻辑错误。,6.1.2 Java语言中的异常类 在Java语言中,对很多可能出现的异常进行了 标准化,并将它们封装成了各种各样的类,我们将 统称为异常类。一旦在程序运行过程中发生异常, Java虚拟机就会自动地创建一个相应的异常类对 象,并将该对象作为参数抛给处理异常的方法。在 这些异常类中,主要包含了有关异常的属性信息, 跟踪信息等。,JAVA异常类结构,Exception类 Exception类标识的异常通常是由应用程序本身 所致的,因此,一旦出现

      2、这些异常,应用程序需要 做出必要的反映。Exception中包含两个比较重要 的子类,一个是IOException类,它包含了有关输 入输出的异常;另外一个是RuntimeException,它 又包含了很多子类,这些子类分别标识了程序运行 期间可能出现的各种异常错误。,java.lang的RuntimeException类的异常子类,6.2 异常处理机制,Java程序中,处理异常要经历三个主要阶段:抛出异常,捕获异常和处理异常。当一个异常被抛出并捕获后,既可以就地自行处理,也可以调用相应异常类的成员方法加以处理,还可以抛给调用该方法的成员方法处理。,6.2.1 抛出异常 所谓抛出异常是指在程序的运行过程中,一旦发生了一个可识别的错误,就立即创建一个与该错误相对应的异常类对象,将其作为参数抛给处理该异常的代码块。如果产生的异常是系统可标识的标准异常,则抛出异常的工作就由系统自动地完成;如果产生的异常是用户自定义的异常,就需要应用程序自行地创建异常类对象,并借助throw语句将其抛出。,6.2.2 捕获异常 在Java程序中,捕获异常用try-catch-finally语句实现,该语句可

      3、以被用来捕获一个或多个异常,基本语法格式为: try Java statements catch (ExceptionType1 ExceptionObject) handler for this exception type catch (ExceptionType2 ExceptionObject) handler for this exception type .,简单的例子 public class TestTryCatch /测试异常捕获类 public static void main(String args) int i=1; int j=0; try /捕获异常语句 System.out.println(“Try block entered “+“i= “+i+“ j= “+j); System.out.println(i/j); /产生ArithmeticException异常 System.out.println(“Ending try block“); catch(ArithmeticException e) System.out.println(“Arithme

      4、tic exception caught“); System.out.println(“After try block“); ,为了更好地控制程序的执行过程,使得程序能够在任何情 况下都具有统一的结束方式,可以在try语句块的最后一个 catch子句之后增加一个finally子句,其基本的语法格式 为: try Java statements catch (ExceptionType1 ExceptionObject) handler for this exception type catch (ExceptionType2 ExceptionObject) handler for this exception type . finally handler for finally ,如果在一个try语句块中有可能发生多种不同类 型的异常,就需要在try之后放置多个catch子句。 try System.out.println(“nFirst try block in divide() entered“); arrayindex+2=arrayindex/arrayindex+1; Sy

      5、stem.out.println(“Code at end of first try block in divide()“); catch (ArithmeticException e) System.out.println(“Arithmetic exception caught in divide()“); catch (ArrayIndexOutOfBoundsException e) System.out.println(“Index-out-of-bounds exception caught“ finally System.out.println(“finally block in divide()“); ,捕获异常的基本过程 在一个方法中,对于没有捕获到的那些标准异常,系统将会把它们抛 向调用这个方法的方法中去,并且这个过程会不断地向上层方法延伸,6.2.3 处理异常 在Java语言中,处理异常主要有两种方式: 在产生异常的方法中处理异常 try-catch-finally语句 将异常抛给调用该方法的代码段 Throws语句,嵌套的try语句 如果try语句相互嵌套,内层

      6、没有捕获到的异常将由外层 捕获。,用thows抛出异常 如果发生异常的方法不清楚具体应该如何处理这 个异常,就可以将其抛出,由调用该方法的方法进 行捕获和处理,或将其继续向上传递,直到某个方 法将其捕获到为止。 Modifiers ResultType MethodName(ParameterList) throws exceptions MethodBody thows关键字后面列出的是该方法可能抛出的所 有异常类名,每个异常类之间用逗号隔开。,异常抛出的简单例子 public class ThrowsException public static void main( String args) try Method( 0 ); Method( 1 ); catch(NumberFormatException e ) System.out.println(“t捕获异常:“+e); catch( ArrayIndexOutOfBoundsException e ) System.out.println(“t捕获异常:“+e); ,finally System.out.println(“

      7、在任何状态下,finally 语句块都将被执行。”); static void Method( int i ) throws ArithmeticException,NumberFormatException System.out.println(“调用方法Method(“+i+“)“); if ( i=0 ) System.out.println(“t没有发生异常事件。”); else if( i=1 ) String str = “xyz“; int c=Integer.parseInt(str); ,6.2.4 用户自定义异常类 为了更加方便应用程序捕获和处理异常,Java语言将很多异常进行了标准化,并组成了类层次结构。不仅如此,它还为用户提供了自定义异常类的能力,使得用户可以根据自己的需求,定义符合自己需求的异常类。,Throwable类 Java语言要求,任何异常类都必须是Throwable 类的子类,Throwable是所有异常类的公共父类。 Throwable类中主要包含了由构造方法初始化的 异常描述性信息和创建异常对象时堆栈的记录情 况,它记载了调用每个成员方法的全部过

      8、程。 如果希望访问这些内容,可以通过Throwable类 中的public成员方法实现。,Throwable类的public成员方法,定义异常类 除了异常类必须是Throwable类的子类之外,建 议最好将定义的异常类作为Exception的子类,这 样Java编译器才能跟踪程序中抛出的异常位置。 定义异常类的基本格式: class TestException extends Exception TestException()super(); TestException(String s) super(s); ,应用自定义的异常类 /filename:Test.java public class Test public static void main(String args) for (int i=0;iargs.length;i+) try thrower(argsi); System.out.println(“Test“+argsi+“ didnt throw an exception“); catch(Exception e) System.out.println(“Test“

      9、+argsi+“ threw a “ +e.getClass()+“n with message:“+e.getMessage(); ,static int thrower(String s) throws TestException try if (s.equals(“divide“) int i=0; return i/i; if (s.equals(“null“) s=null; return s.length(); if (s.equals(“test“) throw new TestException(“Test message“); finally System.out.println(“thrower(“+s+“)done“); /end of class Test,thrower(“divide“)done Test“divide“ threw a class java.lang.ArithmeticException with message:/ by zero thrower(“null“)done Test“null“ threw a classs java.lang.NullPointerException with message:null thrower(“not“)done Test“not“ didnt throw an exception thrower(“test“)done Test“test“ threw a class TestException with message:Test message,运行这个程序后,应该得下面所示的结果:,

      《清华面向对象程序设计:第06章》由会员tia****nde分享,可在线阅读,更多相关《清华面向对象程序设计:第06章》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结 2022年家长会心得体会集合15篇
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.