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(\捕捉第一次产生的空指针异常\ }
finally{
System.out.println(\程序正常执行完毕!\
throw new ArithmeticException (\数学异常\
} }
当在异常处理程序中引发了异常时,该异常应由原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章习题解答
一、简答题
1.什么叫流?对流的分类通常有几种方式?
答:流是指一组有顺序的、有起点和终点的字节结合。 流的分类方式有多种: ?
根据数据流动的方向,可分为输入流和输出流。
输入流:只能从中读取数据,而不能向其写出数据 输出流:只能向其写出数据,而不能从中读取数据 ?
根据处理数据的单位划分,可分为字符流和字节流
字节流:以字节为单位进行数据传输,每次传送一个或多个字节
字符流:以Unicode字符为单位进行数据传输,每次传送一个或多个字符 ? 流
根据数据流所关联的是数据源还是其他数据流,可分为节点流和处理
节点流:直接从指定的位置(如磁盘文件或内存区域)读或写
处理流:对一个巳存在的流的连接和封装,通过对所封装的流的功能调用实现
数据的读/写功能,处理流并不直接连接到数据流。
2.Java的所有I/O流都是四个抽象类的子类,这四个抽象类是什么? 答: ? InputStream:是所有字节输入流的父类 ?
OutputStream:是所有字节输出流的父类
? Reader:是所有输入字符流的父类 ? Writer:是所有输出字符流的父类
3.写出下面这些输入输出流类的输入输出操作的特点。 (1) InputStream和OutputStream
(2) DataInputStream 和DataOutputStream (3) FileInputStream和FileOutputStream (4) PrintStream
(5) RandomAccessFile 答:
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库Java程序设计实用教程习题答案(3)在线全文阅读。
相关推荐: