System.out.println(\异常处理测试 ***\ System.out.println(\ int sum = 100/num; int array[ ]={0,1,2}; array[num]=sum; }
catch( ArithmeticException e ) {
System.out.println(\被零除:\ }
catch( ArrayIndexOutOfBoundsException e ) {
System.out.println(\数组越界:\ }
finally {
System.out.println(\ } } }
问题:在java的异常处理机制中,try程序块、catch程序块和finally程序块各起到什么作用?
答:Try程序块作用: 说明抛出异常的部位,该部位含有抛出异常的语句。
Catch程序块作用:接抛出的异常类进行捕获,并进行处理。当catch前面的try 块中发生了一个异常,try-catch语句就会自动在try块后面的各个catch块中,找出与该异常类相匹配的参数。当参数符合以下3个条件之一时,就认为这个参数与产生的异常相匹配: 参数与产生的异常属于一个类; 参数是产生的异常的父类;
参数是一个接口时,产生的异常实现了这一接口。
当产生的异常找到了第一个与之相匹配的参数时,就执行包含这一参数的catch语句中的java代码。
Finally程序快作用:finally语句可以说是为异常处理事件提供的一个清理机制,一般是用来关闭文件或释放其他的系统资源。作为try-catch-finally结构的一部分,可以没有 finally语句,如果存在finally语句,不论try块中是否发生了异常,是否执行过catch 语句,都要执行finally语句。
4.编写从键盘读入10个字符放入一个字符数组,并在屏幕上显示它们的程序。请处理数组越界异常.
第九章 习题及思考题
1、编一个应用程序,按行顺序地读取一个可读文件的内容。
public class ReaderFile
{
public static void main(String[] args) {
//编一个应用程序,按行顺序地读取一个可读文件的内容 String s; //String s1=\龙卷风的考虑适当考虑饭店客房\ FileInputStream fi;
//FileOutputStream fo=null; InputStreamReader ir; //OutputStreamWriter or; BufferedReader os; // BufferedWriter bw; try { /*
fo=new FileOutputStream(\
bw=new BufferedWriter(new OutputStreamWriter(fo)); bw.write(s1); bw.flush(); bw.close() */;
fi=new FileInputStream(\); ir=new InputStreamReader(fi); os=new BufferedReader(ir); while((s=os.readLine())!=null) { } }
catch(FileNotFoundException e) {
System.out.println(\+e); }
catch(IOException e) {
System.out.println(\+e); } } }
System.out.println(\+s);
2、把Hashtable存放的信息输出到磁盘文件中,并再从中读进Hashtable.
3、利用StringBuffer类编写从键盘读入字符串、整数、实型数,并在屏幕上输出。
源程序:
import java.io.IOException; public class StringBufferedFile {
public static void main(String[] args)throws IOException { char c;
StringBuffer sb=new StringBuffer();
while((c=(char)System.in.read())!='\\n')//键盘输入字符,有换行结束 { sb.append(c);//把字符加到sb对象中 } String str=sb.toString(); System.out.println(str); } }
4、什么叫流?简述流的分类? 答:“流”可以被理解为一条“管道”。这条“管道”有两个端口:一端与数据源(当输入数据时)或数据宿(当输出数据时)相连,另一端与程序相连。在与数据源或是数据宿相连的端口,“管道”在读/写数据时能够应付数据源和数据宿的多样性,消化掉因数据源和数据宿的多样性带来的数据读/写的复杂性;而在与程序相连的端口,“管道”提供了输入/输出的统一界面。
根据流中的数据传输的方向,流可分为输入流和输出流;根据“管道”里流动的数据的类型,流可分为字符流和字节流;根据流的建立方式和工作原理,流可分为节点流与过滤流。
5、编写一个测试文件一般属性(如显示文件的路径、绝对路径、显示文件是否可写、显示文件是否可读、显示文件的大小等属性)的程序。 import java.io.*; public class Test1 {
//file类的方法使用
public static void main(String [] args){ File file=new File(\ //File.pathSeparator if(!file.exists()) {
System.out.println(\文件不存在\ } else {
System.out.println(\文件的绝对路径 \ System.out.println(\文件路径 \ System.out.println(\文件名 \
System.out.println(file.canWrite()?\文件可写 \文件不可可写\
System.out.println(\文件长度 \
//System.out.println(\文件是否可读 \
System.out.println(file.canRead()?\文件可读 \文件不可读\ } } }
6、利用RandomAccessFile类编写应用程序,要求输入10组数据到文件中,每组数据为1个整形数和一个双精度数,然后随机修改文件的某组数,并显示修改的结果。
import java.io.*;
public class testRandom2 {
/*利用RandomAccessFile类编写应用程序,要求输入10组数据到文件中,
每组数据为1个整形数和一个双精度数,然后随机修改文件的某组数,并显示修改的结果 */
public static void main(String args[]) { }
try { }
catch (IOException e) { }
System.out.println(e.toString());
RandomAccessFile rf = new RandomAccessFile(\, for (int i = 0; i < 10; i++) { }
rf.close();
rf = new RandomAccessFile(\, \); rf.seek(5 * (4 + 8)); rf.writeInt(47);
rf.writeDouble(47.0001); rf.close();
rf = new RandomAccessFile(\, \); for (int i = 0; i < 10; i++) { }
rf.close();
System.out.println(\ + rf.readInt() + \
+ rf.readDouble());
rf.writeInt(i);
rf.writeDouble(i * 1.414);
\);