Java实验八,异常

一. 实验目的

1. 掌握自定义异常类的编写;

2. 掌握使用try-catch语句来处理异常。

二. 实验内容及要求

车站检查危险品的设备,如果发现危险品会发出警告。编程模拟设备发现危险品:

1. 编写一个Exception的子类DangerException,该子类可以创建异常对象,该异常对象调用showMessage()方法输出“属于危险品”。

2. 编写一个Goods类,其中包括行李名称和是否为危险品的属性及对应的设置和获取方法。

3. 编写一个Machine类,其中的checkGoods方法当发现行李为危险品时将抛出DangerException异常。

4. 在主类的main()方法中定义n件行李,随机产生其是否为危险品的属性,并使用try-catch语句让Machine类的实例调用checkGoods方法进行异常处理。

三. 实验过程及结果

①DangerException.java
public class DangerException extends Exception{
	String message;//字符串变量,是否为危险品

	public DangerException() {
		message = "属于危险品";
	}//属性为危险品时,设置变量值为"属于危险品"
	
	String showMessage(){
		return message;
	}//返回显示信息
}

②Goods.java
public class Goods {
	String luggageName;//行李名
	boolean isDanger;//行李属性。true:危险;false:不危险
	void setLuggageName(String luggageName){
		this.luggageName = luggageName;
	}//设置行李名
	String getLuggageName(){
		return luggageName;
	}//返回行李名
	
	void setisDanger(boolean b){
		isDanger = b;
	}//随机设置行李属性
	boolean getIsDanger(){
		return isDanger;
	}//返回行李属性
}
③Machine.java
import java.util.Random;
public class Machine {
	void checkGoods(Goods goods) throws DangerException{
		if (goods.isDanger){//若行李性质为true,抛出异常
			throw new DangerException();
		} 
}
	
	public static void main(String[] args){
		Random random = new Random();
		Machine machine = new Machine();
		//行李名可选择范围
		String name[] = {"vegetable", "apple", "gun", "candy", "cheery", "drink"};
		Goods goods[] = new Goods[10];
		System.out.printf("%-26s|%-13s|%s\n", "行李", "是否危险", "异常信息");
		System.out.println("------------------------------------");
		
		for (int i = 0; i < goods.length; i++) {
			int index = random.nextInt(6);
			boolean b = random.nextBoolean();
			goods[i] = new Goods();
			goods[i].setLuggageName(name[index]);//随机设置行李名
			goods[i].setisDanger(b);//随机设置行李属性
			//输出行李信息
			System.out.printf("%-2d. %-12s|%-12s|", i+1, goods[i].getLuggageName(), goods[i].getIsDanger());
			if (!goods[i].getIsDanger()) {
				System.out.println();
			}
			
			try{
				machine.checkGoods(goods[i]);//若危险属性为true,抛出异常
			} catch (DangerException e){
				System.out.println(e.showMessage());//输出异常信息
			}
		}//for
	}//main
}
 

在这里插入图片描述

四. 实验中的问题及心得

1. try-catch:将可能出现异常的操作(代码)放在try部分,一旦try部分抛出异常,或调用某个可能抛出异常对象的方法,且该方法抛出了异常对象,则try部分立刻结束执行,转向catch部分(try-catch可由多个catch组成,分别处理相应异常)

2. Java中所有异常类都是Exception类的子类,属于继承的范畴,对异常类的使用有助于加深对继承的理解

3. Java允许自定义异常类,自定义的异常类可以处理类中独特的异常,自定义的异常类需是Exception类的子类

4. java使用throw关键字抛出一个Exception子类的实例表示异常发生

猜你喜欢

转载自blog.csdn.net/weixin_42250302/article/details/89293226