



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 Java 程序设计精典教程 习题答案 编著 胡伏湘 雷军环 清华大学出版社 第第 8 章习题解答章习题解答 一 一 简答题简答题 1 什么是异常 异常产生的原因有哪些 什么是异常 异常产生的原因有哪些 答 异常就是 Java 程序在运行过程中出现的错误 这类错误使程序非正常终止 但通 过修正后还可以继续运行 异常产生的原因有 1 JVM 检测到非正常的执行状态 这些状态可能由以下情况引起的 表达式违反了 Java 语言的语义 如除数为 0 装入或链接程序时出错 超出了资源限制 如内存不足 这种异常是程序员无法预知的 2 程序代码中的 throw 语句被执行 3 因为代码段不同步而产生 可能的原因是 Thread 线程 的 stop 方法被调用 JVM 内部发生错误 2 为什么 为什么 Java 的异常处理技术优于传统程序的异常处理技术 的异常处理技术优于传统程序的异常处理技术 答 在没有异常处理机制的程序设计语言中进行异常处理 通常是在程序设计中使用 if else 或 switch case 语句所能设想的到的错误情况 以捕捉程序中可能发生的错误 在这种 处理方式的程序中 对异常的监视 报告和处理的代码与程序中完成正常功能的代码交织在 一起 即在完成正常功能的程序的许多地方插入了与处理异常有关的程序块 这种处理方式 虽然在异常发生点可以看到程序如何处理异常 但它干扰了人们对程序正常功能的理解 使 程序的可读性和可维护性下降 并且由于人的思维限制 常常会遗漏一些意想不到的异常 Java 的异常处理机制是在程序中监视可能发生异常的程序块 将一个程序中的所有异 常收集起来放到程序的某一段中处理 而不必在被监视的程序块中多处插入处理异常的代 码 使完成功能的程序代码与进行异常处理的程序代码分开 增强了程序的可读性和可靠性 减少了编程人员的工作量 增加了程序的灵活性 此外 这种机制可以及时有效地处理程序 运行中的异常 可以预防因错误的程序代码或系统错误所造成的不可预期的结果发生 并且 当这些不可预期的错误发生时 异常处理机制会尝试恢复异常发生前的状态或对这些错误结 果做一些善后处理 3 在 在 Java 代码中可用来处理异常的方式有哪些 代码中可用来处理异常的方式有哪些 答 在 Java 代码中可用来处理异常的方式有两种 1 在可能产生异常的方法中 采用 Java 语言提供的 try catch finally 语句块处理异 常 2 如果一个方法可能生成某种异常 但是并不能确定如何处理这种异常 则此方 法应声明抛弃该种异常 表明该方法将不对此类异常进行处理 而由该方法的调用者负责处 理 此时需在方法声明中包含 throws 子句 2 4 如果发生了一个异常 但没有找到适当的异常处理程序 则会发生什么情况 如果发生了一个异常 但没有找到适当的异常处理程序 则会发生什么情况 答 如果发生了一个异常 但没有找到适当的异常处理程序 则 Java 系统会采用 Java 异常处理机制预设处理方法来处理异常 即一旦程序发生异常 程序就会被终止并显示相应 的错误信息给用户 5 说明 说明 throw 与与 throws 有什么不同 有什么不同 答 throw 与 throws 的不同之处在于 throw 语句是一个独立的语句 用来明确地抛出一个异常 其作用是改变程序的执行流 程 使程序跳到相应的异常处理语句中执行 而 throws 语句总是和方法定义结合起来用 在有些情况下 不需要一个方法处理本身可能产生的异常 而是希望把异常向上移交给调用 这个方法的方法来处理 就需要通过 throws 语句来实现 6 在设计 在设计 catch 块处理不同的的异常时 一般应注意哪些问题 块处理不同的的异常时 一般应注意哪些问题 答 应注意如下的问题 1 catch 块中的语句应根据异常的不同执行不同的操作 比较通用的操作是打印异常 的相关信息 包括异常名称 产生异常的方法名等 2 由于异常对象与 catch 块的匹配是按 catch 块的先后排列顺序进行的 所以在处理 多异常进应注意认真设计各 catch 块的排列顺序 一般地 处理较具体和较常见的异常的 catch 块应放在前面 而可以与多种异常相匹配的 catch 块应放在较后的位置 二 编程题二 编程题 1 编写一个程序 用来将作为命令行参数输入的值转换为数字 如果输入的值无法转 编写一个程序 用来将作为命令行参数输入的值转换为数字 如果输入的值无法转 换为数字 则程序应显示相应的错误消息 要求通过异常处理方法解决 换为数字 则程序应显示相应的错误消息 要求通过异常处理方法解决 class XT008201 public static void main String arg try int i Integer parseInt arg 0 System out println 输入的字符串可以转换为一个有效数字 catch NumberFormatException e System out println 请输入一个有效数字 在在 JCreator 中如何输入命令行参数中如何输入命令行参数 Configure Options JDK Tools 然后在 select Tool 下拉列表下拉列表 里选择 Run Application 单击下面的 Default 单击 Edit 按钮 在弹出的窗口里选 Parameters 勾选 Prompt for main method argume OK 就可以了 然后执行运行时会跳出一个对话框 需要在里面输入 现在输入的就是 args 要输入多个就以空格隔开 3 2 编写一个程序 用于将来自用户的两个数字接受为命令行参数 将第一个数字除 编写一个程序 用于将来自用户的两个数字接受为命令行参数 将第一个数字除 以第二次数字并显示结果 代码应当处理引发的异常 即在输入的参数数量不是两个或用以第二次数字并显示结果 代码应当处理引发的异常 即在输入的参数数量不是两个或用 户输入户输入 0 作为参数时引发异常 作为参数时引发异常 class XT008202 public static void main String args int x y z try x Integer parseInt args 0 y Integer parseInt args 1 z x y System out println x y z catch ArrayIndexOutOfBoundsException e System out println 输入的参数数量不是两个 catch ArithmeticException e System out println 第二个参数不能为零 finally System out println 程序运行结束 3 编写一个程序 说明在一个 编写一个程序 说明在一个 catch 处理程序中引发一个异常时会发生什么情况 处理程序中引发一个异常时会发生什么情况 public class XT008203 public static void main String args try throw new NullPointerException 空指针异常 catch NullPointerException e System out println 捕捉第一次产生的空指针异常 throw new ArithmeticException 数学异常 finally System out println 程序正常执行完毕 当在异常处理程序中引发了异常时 该异常应由原 try 块的外层程序来处理 如果没 有捕获处理 异常将向上级传递 4 编写一个可演示用户自定义异常用法的程序 该程序接受用户输入的学生人数 当 编写一个可演示用户自定义异常用法的程序 该程序接受用户输入的学生人数 当 4 输入一个负数时 认为是非法的 用户自定义异常捕获此错误 输入一个负数时 认为是非法的 用户自定义异常捕获此错误 import java io class XT008204 public static void main String args String s int t while true try System out print 请输入学生人数 BufferedReader in new BufferedReader new InputStreamReader System in s in readLine t Integer parseInt s if t 0 throw new NegException 人数不能为负数 System out println 你输入的人数是 t break end try catch
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 难点解析-北师大版9年级数学上册期末测试卷(原创题)附答案详解
- 难点详解自考专业(小学教育)试卷附答案【综合卷】
- 难点解析河南省永城市中考数学真题分类(平行线的证明)汇编章节练习试卷(含答案详解)
- 2025年事业单位笔试-甘肃-甘肃中医外科学(医疗招聘)历年参考题库典型考点含答案解析
- 2025年事业单位笔试-四川-四川超声诊断(医疗招聘)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-黑龙江-黑龙江印刷工三级(高级工)历年参考题库含答案解析
- 2025年事业单位工勤技能-贵州-贵州护理员四级(中级工)历年参考题库含答案解析
- 2025年事业单位工勤技能-贵州-贵州城管监察员三级(高级工)历年参考题库含答案解析
- 2025年事业单位工勤技能-福建-福建药剂员二级(技师)历年参考题库含答案解析
- 浙江省温州新力量联盟2017-2018学年高二上学期期末考试地理试题
- 产科危急重症早期识别中国专家共识(2025年版)
- 福建福州工会招聘工会社会工作者笔试真题2024
- 化学品使用安全知识培训课件
- 航班延误心理影响-洞察及研究
- 2025年云南磨憨开发投资集团有限公司招聘考试笔试试题(含答案)
- 2024年安徽省泗县人民医院公开招聘护理工作人员试题带答案详解
- 2025秋人教版(2024)八年级上册地理 【教学课件】1.1.1 《疆域》
- GB/T 24538-2009坠落防护缓冲器
- 泵车操作手册
- 马克思主义基本原理概论讲义
- 赴美移民体检信息登记表
评论
0/150
提交评论