第五章异常处理ppt课件.ppt_第1页
第五章异常处理ppt课件.ppt_第2页
第五章异常处理ppt课件.ppt_第3页
第五章异常处理ppt课件.ppt_第4页
第五章异常处理ppt课件.ppt_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第5章异常处理 5 1程序错误与处理5 2Java的异常处理 5 1程序错误与处理 5 1 1程序错误 发现时刻及错误处理原则5 1 2面向过程与面向对象语言的错误处理方式比较5 1 3Java的错误和异常 5 1 1程序错误 发现时刻及错误处理原则 语法错违反语法规范的错误称为语法错 在编译时发现 语义错在语义上存在错误 则称为语义错 运行时才能被发现 逻辑错系统无法发现逻辑错 5 1 2面向过程与面向对象语言的错误处理方式比较 面向过程语言错误处理方式的缺陷不进行范围检查采用if语句进行事先判断以防止出现错误 面向对象语言异常处理的思想异常处理机制的优越之处体现在以下两方面 从语法上看 异常处理语句将程序正常代码与错误处理代码分开 使程序结构清晰 算法重点突出 可读性强 从运行效果看 异常处理语句使程序具有处理错误的能力 5 1 3Java的错误和异常 Java语言是安全的Java语言提供严密的语法规则 Java在编译和运行时严格检查错误 Java提供异常处理机制 Java提供内存自动管理方式 错误与异常错误 error 指程序运行时遇到的硬件或操作系统的错误 异常 exception 指在硬件和操作系统正常时 程序遇到的运行错 图5 1Java程序发现错误和异常 3 错误类和异常类 Error错误类 JVM生成并抛出 Exception异常类除数为0的算术异常 数组下标越界异常 空指针异常等 例5 1 发现除数为0错 运行时能够发现整数除法中除数为0的语义错运行时不能发现浮点数除法中除数为0的语义错 例5 2 发现数组下标越界的语义错 4 程序对错误与异常的三种处理方式 程序不能处理错误程序应避免而不捕获的异常 如除数为0 数组下标越界等 必须捕获的异常 5 2Java的异常处理 5 2 1异常类说明5 2 2异常处理语句5 2 3抛出异常5 2 4自定义异常类 Java把程序运算中可能遇到的错误分为两类 一类是非致命性的 通过某种修正后程序还能继续执行 这类错误称作异常 另一类是致命性的 即程序遇到了非常严重的不正常状态 不能简单地恢复执行 这就是错误 Java提供了异常处理机制 在Exception类中定义了程序产生异常的条件 对待异常通常并不是简单地结束程序 而是转去执行某段特殊代码处理这个异常 设法恢复程序继续执行 Java实现了C 风格的异常 当程序中发生异常时 称程序产生了一个异常事件 相应地生成异常对象 生成的异常对象传递给Java运行时系统 异常产生和提交的这一过程称为抛出 异常发生时 Java运行时系统从生成对象的代码块开始 沿方法的调用栈逐层回溯 寻找相应的处理代码 并把异常对象交给该方法处理 这一过程称为捕获 所有的包中都定义了异常类和错误类 Exception类是所有异常的父类Error类是所有错误的父类 这两个类同时又是Throwable的子类 异常和错误类的层次结构如图所示 5 2 1异常类说明 Exception异常类publicclassThrowableimplementsSerializable publicThrowable publicThrowable Stringmessage publicStringgetMessage 获得异常信息publicStringtoString 获得异常对象的描述信息publicvoidprintStackTrace 显示异常栈跟踪信息 publicclassExceptionextendsThrowable publicException publicException Strings 2 RuntimeException运行异常类 算术异常ArithmeticException 除数为0空对象异常NullPointerExceptioninta null a 0 1 对空数组中的元素进行操作 产生空对象异常Stringstr null System out println str length 调用空对象的方法 产生空对象异常类型强制转换异常ClassCastExceptionObjectobj newObject Stringstr String obj 2 RuntimeException运行异常类 负数组长度异常NegativeArraySizeExceptioninta newint 1 产生负数组长度异常数组下标越界异常ArrayIndexOutOfBoundsExceptioninta newint 1 a 1 1 产生数组下标越界异常数值格式异常NumberFormatExceptionintj Integer parseInt abc 产生数值格式异常 5 2 2异常处理语句 异常处理语句语法try 语句1 存在潜在异常的代码 catch 异常类异常对象 语句2 捕获到异常并进行处理的代码 finally 语句3 最后必须执行的代码 无论是否捕获到异常 例5 3 异常的捕获和处理 图5 4异常处理语句的执行流程 正常情况下 try 无异常 跳过catch finally 继续Catch子句匹配规则 抛出异常对象与catch子句参数类型相同抛出异常对象是catch子句参数类的子类按照先后次序捕获抛出的异常对象 只捕获一次 多个catch子句需要按照异常类从子类到父类的次序依次排列 finally语句是最后必须执行的代码 无论是否产生异常 publicclassTry2 publicstaticvoidmain Stringargs inti 0 inta 5 6 7 8 for i 0 i 5 i try System out print a i i a i i catch ArrayIndexOutOfBoundsExceptione System out print 捕获数组下标越界异常 catch ArithmeticExceptione System out print 捕获算术异常 catch Exceptione System out print 捕获 e getMessage 异常 显示异常信息 finally System out println i i System out println 继续 5 2 3抛出异常 抛出自定义异常对象的throw语句throw异常对象publicvoidset intage if age 0 抛出异常 例5 5 抛出自定义异常对象 2 方法声明抛出异常的throws子句 修饰符 返回值类型方法 参数列表 throws异常类 publicstaticintparseInt Strings throwsNumberFormatException 例5 6 声明抛出异常的方法与方法调用者处理异常 构造方法和重载的set 方法声明抛出异常 main 方法声明抛出异常交由系统处理 5 2 4自定义异常类 例5 7 自定义异常类 publicclassIllegalAgeExceptionextendsException 无效年龄异常类 publicIllegalAgeException Strings publicIllegalAgeException 捕获自定义异常类 而非Exception类catch IllegalAgeExceptione e printStackTrace 显示异常栈跟踪信息 理解Java异常处理模型三种操作 声明异常 拋出异常和捕获异常 1 声明异常在方法声明中使用throws关键字声明异常publicvoidmyMethod throwsIOException 2 拋出异常发现错误后 创建异常实例 拋出异常thrownewIllegalArgumentExcep

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论