java实验指导(9)

2019-08-03 12:18

JAVA面向对象程序设计实验指导书

2.异常类型不匹配的程序

(1)编写一个catch 语句中声明的异常类型不匹配的程序

提示:该程序表明,如果试图捕获一个不同类型的异常,将会发生意想不到的情况。

3.包含多个catch 子句的异常处理程序

(1) 程序功能:在try 子句中设计两个可能出现的异常,当a为0 时会发生异常。另外一个是肯定的异常,因为数组c的长度为1,定义c[42]是为法的。通过两个catch 子句分别来捕获异常。

4.throw 语句的使用

(1)编写带有throw 语句的程序TC5.java,源代码如下。 public class LX4_9 {

static void throwProcess() {

try {

throw new NullPointerException(\空指针异常\catch (NullPointerException e) {

System.out.println(\在 throwProcess 方法中捕获一个\throw e; } }

public static void main(String args[]) {

try {

throwProcess(); }

catch (NullPointerException e) {

System.out.println(\再次捕获:\} } }

(2)编译并运行程序,结果如图4.11 所示。

图4.11

(3)程序执行流程 程序首先调用throwProcess 方法,明确地抛出了一个NullPointerException 异常并将其命名为“空指针异常”。然后程序流程将转向throwProcess 方法中的catch 子句,输出一条信息。throwProcess 方法的catch 子句又抛出了一个同样的异常e。然后结束throwProcess 方法的调用,执行main 方法中的catch 子句,再次捕获这个异常。

3.带有捕获处理的throws 子句

(1)程序功能:在这个程序中的mathod 方法中使用throws 子句抛出异常,在main 方法中捕获处理异常。

(2)TC6.java,源代码如下。 import java.io.*; public class LX4_11{

static void mathod() throws IllegalAccessException {

System.out.println(\在 mathod 中抛出一个异常\

- 37 -

JAVA面向对象程序设计实验指导书

throw new IllegalAccessException();

}

public static void main(String args[]) {

try { mathod(); }

catch (IllegalAccessException e) {

System.out.println(\在 main 中捕获异常:\} } }

(3)编译并运行程序,结果如图4.13 所示。

图4.13

5. finally 子句的作用

当一个异常被抛出时,程序的执行流程就不再是连续的了,会跳过某些语句,甚至会由于没有与之匹配的catch 子句而过早地返回,结束程序的运行。为了确保一段代码不管发生什么异常都能被执行,可以使用finally 子句。每个try 语句至少都要有一个与之相配的catch 或finally 子句。

从一个方法中返回到调用它的另外一个方法,可以通过return 语句或通过一个没有被捕获的异常,但finally 子句总是在返回前被执行。

2. 创建使用finally 子句的程序文件LX4_12.java。

(1)程序功能:在类LX4_12 的mathodA 方法中使用try 子句捕获异常,使用finally 子句处理异常。在类LX4_11 的main 方法中使用try 子句捕获mathodA 异常,

(2)编写LX4_12.java 程序,源代码如下。 class LX4_12{

static void mathodA() {

try { System.out.println(\抛出一个异常\throw new RuntimeException(); }

finally {

System.out.println(\执行 mathodA 的 finally\} }

static void mathodB() {

try{

System.out.println(\正常返回\return; }

finally { System.out.println(\执行 mathodB 的 finally\}

public static void main(String args[]) {

try {

mathodA();

} catch (Exception e) {

mathodB(); }}}

(3)编译并运行该程序,,结果如图4.14 所示。

- 38 -

JAVA面向对象程序设计实验指导书

图4.14

注意:对于程序中需要处理的异常,一般要编写try-catch-finally 语句捕获并处理。 (十七) 创建自定义异常类

1.创建自定义异常类程序文件LX4_13.java

(1) 程序功能:通过继承Exception 异常类创建一个自定义异常类MyException, 然后再创建一个主类LX4_13 使用自定义异常类MyException。

(2)编写LX4_13.java 程序文件,源代码如下。

class MyException extends Exception {

private int x;

MyException(int a) { x=a; }

public String toString() {

return \自定义异常类MyException\} }

public class LX4_13 {

static void mathod(int a) throws MyException { // 声明方法会抛出MyException System.out.println(\此处引用 mathod (\if (a>10) throw new MyException(a); // 主动抛出 MyException System.out.println(\正常返回\}

public static void main(String args[]) { try {

System.out.println(\进入监控区,执行可能发生异常的程序段\mathod(8); mathod(20); mathod(6); }

catch (MyException e) {

System.out.println(\程序发生异常并在此处进行处理\System.out.println(\发生的异常为:\}

System.out.println(\这里可执行其它代码\(3)编译并运行程序,结果如图4.15 所示。

- 39 -

JAVA面向对象程序设计实验指导书

图4.15

(三) 使用输入输出流类

1. 使用标准数据流的应用程序

标准数据流指在字符方式下(如DOS 提示符)程序与系统进行输入输出的方式,键盘和显示器屏幕是标准输入输出设备,数据输入的起点为键盘,数据输出的终点是屏幕,输出的数据可以在屏幕上显示出来。

(1) 程序功能:将键盘上输入的字符在屏幕上显示出来。 (2) 编写LX5_3.java 程序文件,源代码如下。 class LX5_3{

public static void main(String[] args) throws java.io.IOException { byte buffer[]=new byte[10];

System.out.println(\从键盘输入不超过10 个字符,按回车键结束输入:\

int count =System.in.read(buffer);// 读取输入的字符并存放在缓冲区buffer 中 System.out.println(\保存在缓冲区buffer 中元素的个数为:\System.out.println(\中各元素的值为:\for (int i=0;i

System.out.print(\在屏幕上显示buffer 元素的值 }

System.out.println();

System.out.println(\输出buffer 字符元素:\System.out.write(buffer, 0, buffer.length); } }

(3)编译LX5_3.java 文件。

(4)在命令提示符窗口运行LX5_3.class 文件,并输入1234,结果如图5.4 所示。

图5.4

思考:为什么缓冲区buffer 中元素的个数为显示的是6? 2. 使用文件输入输出流的应用程序

- 40 -

JAVA面向对象程序设计实验指导书 (1)程序功能:将保存在本地机当前文件夹中的LX5_1.HTML 文本文件的内容在屏幕上显示出来,然后将其另存为LX5_1.txt 文件。

(2)编写LX5_4.java 程序文件,源代码如下。 import java.io.*; public class LX5_4 {

public static void main(String[] args) throws IOException { FileReader in=new FileReader(\建立文件输入流 BufferedReader bin=new BufferedReader(in);//建立缓冲输入流

FileWriter out=new FileWriter(\建立文件输出流 String str; while ((str=bin.readLine())!=null) {

//将缓冲区内容通过循环方式逐行赋值给字符串str System.out.println(str);// 在屏幕上显示字符串strout

System..write(str+\将字符串str 通过输出流写入LX5_1.txt 中 }

in.close(); out.close(); } }

(3) 编译并运行程序,结果如图5.5 所示。

图5.5

(4) 在当前文件夹中找到LX5_1.txt 文件并打开,可看到如图5.6 所示内容。再运行一次程序,看看会发生什么变化。

图5.6

(5)总结:程序中使用了哪些数据流类,建立数据流的步骤。

3. 使用随机文件类的应用程序

思考:本程序中的数据流rf 有什么特点?

4. 使用数据输入输出流与文件输入输出流类的应用程序

使用数据输入流DataOutputStream 和数据输出流DataInputStream 可以读取或写入任何Java 类型的数据,不用关心它们的实际长度是多少字节。一般与文件输入流FileInputStream 和输出流类FileOutputStream 一起使用。

(1)程序功能:将整型数据和字符串对象通过数据输出流写到文件中。将文件中的整型数据和

字符串对象通过数据输出流读出,并在屏幕上显示文件中的内容。 思考:数据输入输出流的特点。

- 41 -


java实验指导(9).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:牛津译林版2017-2018学年九年级(上)期末英语试卷及答案解析

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: