Java程序设计实用教程习题答案(4)
public void actionPerformed(ActionEvent e){ MenuItem mt=(MenuItem)e.getSource(); setTitle(mt.getActionCommand()); }
public static void main(String args[]){ new MyMenu(); } }
第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子句。
4.如果发生了一个异常,但没有找到适当的异常处理程序,则会发生什么情况?
答:如果发生了一个异常,但没有找到适当的异常处理程序,则Java系统会采用Java异常处理机制预设处理方法来处理异常,即一旦程序发生异常,程序就会被终止并显示相应的错误信息给用户。
5.说明throw与throws有什么不同? 答:throw与throws的不同之处在于: throw语句是一个独立的语句,用来明确地抛出一个异常,其作用是改变程序的执行流程,使程序跳到相应的异常处理语句中执行。而throws语句总是和方法定义结合起来用,在有些情况下,不需要一个方法处理本身可能产生的异常,而是希望把异常向上移交给调用这个方法的方法来处理,就需要通过throws语句来实现。
6.在设计catch块处理不同的的异常时,一般应注意哪些问题? 答:应注意如下的问题:
(1)catch块中的语句应根据异常的不同执行不同的操作,比较通用的操作是打印异常的相关信息,包括异常名称、产生异常的方法名等。
(2)由于异常对象与catch块的匹配是按catch块的先后排列顺序进行的,所以在处理多异常进应注意认真设计各catch块的排列顺序。一般地,处理较具体和较常见的异常的catch块应放在前面,而可以与多种异常相匹配的catch块应放在较后的位置。
第二种方法:利用Applet的getAudioClip()方法创建声音剪辑对象,加载指定文件,返回AudioClip对象,然后利用AudioClip对象的声音文件处理方法play( )或loop( )方法播放声音。
二、编程题
1.编写一个程序,用来将作为命令行参数输入的值转换为数字,如果输入的值无法转换为数字,则程序应显示相应的错误消息,要求通过异常处理方法解决。
程序代码如下:
class NumberException{
public static void main(String arg[]) { try{
int i=Integer.parseInt(arg[0]); System.out.println(\输入的字符串可以转换为一个有效数字\ }
catch(NumberFormatException e){ System.out.println(\请输入一个有效数字\ } }
}
2.编写一个程序,用于将来自用户的两个数字接受为命令行参数。将第一个数字除以第二次数字并显示结果。代码应当处理引发的异常,即在输入的参数数量不是两个或用户输入0作为参数时引发异常。
程序参考代码如下: class MulException{
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+\ } catch(ArrayIndexOutOfBoundsException e){ System.out.println(\输入的参数数量不是两个\ } catch(ArithmeticException e){ System.out.println(\第二个参数不能为零\ }
finally{ System.out.println(\程序运行结束\ } } }
3.编写一个程序,说明在一个catch处理程序中引发一个异常时会发生什么情况。
参考代码如下:
public class catchException{
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.编写一个可演示用户自定义异常用法的程序,该程序接受用户输入的学生人数,当输入一个负数时,认为是非法的。用户自定义异常捕获此错误。
程序参考代码: import java.io.*; class MyException { 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(\你输入的人数是:\ break; } catch(IOException e){ System.out.println(e);} catch(NegException e){System.out.println(e);} } }
}
class NegException extends Exception{ public NegException(String message){ super(message); } }
第9章习题解答
一、简答题
相关推荐:
- [高等教育]公司协助某村精准扶贫工作总结.doc
- [高等教育]高二生物知识点总结(全)
- [高等教育]苏教版数学三年级下册《解决问题的策略
- [高等教育]仪器分析课程学习心得
- [高等教育]2017年五邑大学数学与计算科学学院333
- [高等教育]人教版七年级下册语文第四单元测试题(
- [高等教育]2018年秋七年级英语上册Unit7Howmuchar
- [高等教育]2017年八年级下数学教学工作小结
- [高等教育]湖南省怀化市2019届高三统一模拟考试(
- [高等教育]四年级下册科学_基础训练及答案教材
- [高等教育]城郊煤矿西风井管路伸缩器更换施工安全
- [高等教育]昆八中20182019学年度上学期期末考试
- [高等教育]项目部各类人员任命书
- [高等教育]上市公司经营水务产业的模式
- [高等教育]人教版高二化学第一学期第三章水溶液中
- [高等教育]【中考物理第一轮复习资料】四.压强与
- [高等教育]金坑水电站报废改建工程机电设备更新改
- [高等教育]高中生物教学工作计划简易版
- [高等教育]2017年西华大学攀枝花学院(联合办学)44
- [高等教育]最新整理超短爆笑英文小笑话大全
- 优秀教师继续教育学习心得体会
- 阳历到阴历的转换
- 留守儿童教育案例分析
- 华师17春秋学期《玩教具制作与环境布置
- 测速传感器新型安装装置的现场应用
- 人教版小学数学三年级下册第四单元
- 创业个人意向书
- 山东省潍坊市2012年高考仿真试题(三)
- [恒心][好卷速递]四川省成都外国语学校
- 多少人错把好转反应当成了病情加重处理
- 中外广播电视史复习资料整理
- 江苏省扬州市江都区宜陵镇中学2014-201
- 工程造价专业毕业实习报告
- 广西师范学院心理与教育统计
- aympkrq基于 - asp的博客网站设计与开
- 建筑业外出经营相关流程操作(营改增后
- 人治 德治 法治
- [精华篇]常识判断专项训练题库
- 中国共产党为什么要实行民主集中
- 小学数学第三册第一单元试卷(A、B、C




