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

下载本文档

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

文档简介

1 异常处理 2 目标 理解异常的概念运用try块 catch块和finally块处理异常运用多重catch块处理异常运用嵌套try catch块处理异常运用关键字throw和throws处理异常运用JAVA编写和使用自定义异常 3 生活中的异常 正常情况下 但是 异常情况迟早要发生 一路畅通 堵车 撞车 4 程序中的异常 publicclassHelloAccp publicstaticvoidmain String args System out print 请输入1至3之间的数字 Scannerin newScanner System in intcourseCode in nextInt 从键盘输入整数switch courseCode case1 System out println C 编程 break case2 System out println Java编程 break case3 System out println SQL基础 输入 1输出 C 编程 输入 abc程序中断运行 正常情况 异常情况 5 什么是异常 异常就是在程序的运行过程中所发生的不正常的事件 它会中断正在运行的程序 绕行或者等待 请求交警解决 异常 面对异常该怎么办呢 通常情况下 我们会这样处理 程序运行 程序中断运行 堵车 撞车 生活中 我们会根据不同的异常进行相应的处理 而不会就此中断我们的生活 6 Exception ArithmeticException NullPointerException Object Throwable Error ThreadDeath SQLException RuntimeException NumberFormatException 异常类的层次结构 Throwable具有两个子类 它们是Exception 处理用户程序应当捕获的异常情况Error Error类的异常为内部错误 因此在正常情况下不期望用户的程序捕获它们 AWTError 7 Java异常类 文件结束 EOFException 找不到文件 FileNotFoundException I O异常的根类 IOException 数字转化格式异常 比如字符串到float型数字的转换无效 NumberFormatException 不能加载所需的类 ClassNotFoundException 方法接收到非法参数 IllegalArgumentException 数组大小小于或大于实际的数组大小 ArrayIndexOutOfBoundException 尝试访问null对象成员 NullPointerException 许多java lang异常的基类 RuntimeException 异常层次结构的根类 Exception 算术错误情形 如以零作除数 ArithmeticException 线程中断 InterruptedException 说明 异常 8 什么是异常处理 Java编程语言使用异常处理机制为程序提供了错误处理的能力 程序中预先想好了对付异常的处理办法 异常 程序运行 处理完毕 程序继续运行 对异常进行处理 9 Java中如何进行异常处理 Java的异常处理是通过5个关键字来实现的 try catch finally throw throws 捕获异常 catch try finally 执行可能产生异常的代码 捕获异常 无论是否发生异常 代码总能执行 手动抛出异常 抛出异常 throw 声明异常 声明方法可能要抛出的各种异常 throws 10 异常处理块的一般形式 try 要监控错误的代码块 catch Exceptione Exceptione的异常处理程序 finally 在try结束前要执行的代码块 11 try catch块 try catch try catch块后的代码段 publicvoidmethod try 代码段 此处不会产生异常 catch 异常类型ex 对异常进行处理的代码段 代码段 使用try catch块捕获异常 分为三种情况 第一种情况 12 try catch块7 2 使用示例模拟第一种情况 publicclassAccpException publicstaticvoidmain String args System out print 请输入1至3之间的数字 Scannerin newScanner System in try intcourseCode in nextInt switch courseCode case1 System out println C 编程 break case2 System out println Java编程 break case3 System out println SQL基础 catch Exceptionex System out println 输入不为数字 System out println 欢迎提出建议 输入 2 Java编程欢迎提出建议 控制台输出 13 try catch块 try catch 异常类型匹配 try catch块后的代码段 进入catch块 publicvoidmethod try 代码段1 产生异常的代码段2 代码段3 catch 异常类型ex 对异常进行处理的代码段4 代码段5 使用try catch块捕获异常 分为三种情况 第二种情况 产生异常对象 程序继续执行 异常是一种特殊的对象 类型为java lang Exception或其子类 发生异常 14 try catch块7 4 使用示例模拟第二种情况 publicclassAccpException publicstaticvoidmain String args System out print 请输入1至3之间的数字 Scannerin newScanner System in try intcourseCode in nextInt switch courseCode case1 System out println C 编程 break case2 System out println Java编程 break case3 System out println SQL基础 catch Exceptionex System out println 输入不为数字 ex printStackTrace System out println 欢迎提出建议 输入 abc 输入不为数字 异常堆栈信息欢迎提出建议 控制台输出 15 printStackTrace的堆栈跟踪功能显示出程序运行到当前类的执行流程 publicclassAccpException publicstaticvoidmain String args System out print 请输入课程代号 1至3之间的数字 Scannerin newScanner System in try intcourseCode in nextInt 此处代码省略 catch Exceptionex System out println 输入不为数字 ex printStackTrace System out println 欢迎提出建议 try catch块 16 try catch块 try catch 异常类型不匹配 try catch块后的代码段 程序中断运行 发生异常 publicvoidmethod try 代码段1 产生异常的代码段2 代码段3 catch 异常类型ex 对异常进行处理的代码段4 代码段5 使用try catch块捕获异常 分为三种情况 第三种情况 产生异常对象 17 try catch块7 7 使用示例模拟第三种情况 publicclassAccpException2 publicstaticvoidmain String args System out print 请输入课程代号 1至3之间的数字 Scannerin newScanner System in try intcourseCode in nextInt switch courseCode case1 System out println C 编程 break case2 System out println Java编程 break case3 System out println SQL基础 catch NullPointerExceptionex System out println 输入不为数字 System out println 欢迎提出建议 输入 abc 程序中断运行 18 try catch finally 在try catch块后加入finally块 可以确保无论是否发生异常 finally块中的代码总能被执行 try块 finally块 catch块 无异常 有异常 19 try catch finally2 2 publicclassAccpException3 publicstaticvoidmain String args System out print 请输入1至3之间的数字 Scannerin newScanner System in try intcourseCode in nextInt switch courseCode case1 System out println C 编程 break case2 System out println Java编程 break case3 System out println SQL基础 catch Exceptionex System out println 输入不为数字 finally System out println 欢迎提出建议 输入 2 Java编程欢迎提出建议 控制台输出 输入 abc 输入不为数字 欢迎提出建议 第一种情况 无异常 第二种情况 有异常 20 publicvoidmethod try 代码段 产生异常 异常类型2 catch 异常类型1ex 对异常进行处理的代码段 catch 异常类型2ex 对异常进行处理的代码段 catch 异常类型3ex 对异常进行处理的代码段 代码段 多重catch块2 1 一段代码可能会引发多种类型的异常当引发异常时 会按顺序来查看每个catch语句 并执行第一个与异常类型匹配的catch语句执行其中的一条catch语句之后 其后的catch语句将被忽略 try 与异常类型1不匹配 try catch块后的代码段 发生异常 产生异常对象 catch 与异常类型2匹配 catch catch 程序继续执行 进入catch块 21 多重catch块2 2 publicclassAccpException4 publicstaticvoidmain String args Scannerin newScanner System in try System out print 请输入S1的总学时 inttotalTime in nextInt 总学时System out print 请输入S1的课程数目 inttotalCourse in nextInt 课程数目System out println S1各课程的平均学时为 totalTime totalCourse catch InputMismatchExceptione1 System out println 输入不为数字 catch ArithmeticExceptione2 System out println 课程数目不能为零 catch Exceptione System out println 发生错误 e getMessage 输入 270H 在安排catch语句的顺序时 首先应该捕获最特殊的异常 然后再逐渐一般化 即先子类后父类 输出 输入不为数字 进入第一个catch块 输入 2700 输出 课程数目不能为零 进入第二个catch块 22 抛出异常 如果在当前环境无法解决一个异常 就要将其抛出 把异常交给调用者处理 publicclassAccpTeacher privateStringid 教员编号 长度应为7publicvoidsetId StringpId 判断教员编号的长度是否为7if pId length 7 id pId else thrownewIllegalArgumentException 参数长度应为7 publicclassAccpTeacherTest publicstaticvoidmain String args AccpTeacherteacher newAccpTeacher try teacher setId 088 catch IllegalArgumentExceptionex System out println ex getMessage 抛出异常 捕获异常 参数长度应为7 控制台输出 23 声明异常 publicclassAccpTeacher privateStringid 教员编号 长度应为7publicvoidsetId StringpId throwsIllegalArgumentException 判断教员编号的长度是否为7if pId length 7 id pId else thrownewIllegalArgumentException 参数长度应为7 publicclassAccpTeacherTest publicstaticvoidmain String args AccpTeacherteacher newAccpTeacher try teacher setId 088 catch IllegalArgumentExceptionex System out println ex getMessage 由调用者捕获异常 声明该方法可能会产生异常 24 用户自定义异常 自定义异常概念使用自定义异常的时候JavaAPI提供的内置异常不一定总能捕获程序中发生的所有错误 有时会需要创建用户自定义异常自定义异常需要继承Exception及其子类 25 用户自定义异常 创建一个类继承Exception或其子类为该异常类添加构造方法在一个方法中使用throw抛出异常在另一个方法中捕获并处理异常 classMyExceptionextendsException privateinti MyException inta i a publicStringtoString returni 大于10啦 26 用户自定义异常2 3 publicclassExceptionDemo staticvoidgo inta throwsMyException System out println a a if a 10 thrownewMyException a System out println 正常结束 publicstatic

温馨提示

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

评论

0/150

提交评论