JAVA中的异常——练习

/*
 * 需求:教师用电脑上课
 * 
 * 上课中出现的问题
 * 比如:电脑蓝屏
 * 		 电脑冒烟
 * 
 * 对问题进行描述,封装成对象
 * 
 * 可是当冒烟发生后,出现讲课进度无法继续
 * 出现了讲师的问题,课时计划无法完成
 * 
 * */

class LanPingException extends Exception {
	LanPingException(String message) {
		super(message);
	}
}

class MaoYanException extends Exception {
	MaoYanException(String message) {
		super(message);
	}
}

class NoPlanException extends Exception{
	public NoPlanException(String message) {
		// TODO Auto-generated constructor stub
		super(message);
	}
}

class Teacher {
	private String name;
	private Computer computer;

	Teacher(String name) {
		this.name = name;
		computer = new Computer();
	}

	public void perlect() throws NoPlanException{
		try {
			computer.run();

		} catch (LanPingException e) {
			// TODO: handle exception
			computer.reboot();
		}

		catch (MaoYanException e) {
			// TODO: handle exception
			test();
			throw new NoPlanException("无法讲课"+e.getMessage());
		}

		System.out.println("讲课");
	}
	public void test(){
		System.out.println("练习");
	}
}

class Computer {
	private int state = 3;

	public void run() throws LanPingException, MaoYanException {
		if (state == 2)
			throw new LanPingException("蓝屏请重启");
		if (state == 3)
			throw new MaoYanException("冒烟了请维修");
		System.out.println("电脑运行");
	}

	public void reboot() {
		state = 1;
		System.out.println("电脑重启");
	}
}

public class ExceptionTest {
	public static void main(String args[]) {
		Teacher teacher = new Teacher("老师");
		try{
			teacher.perlect();
		}
		catch (NoPlanException e) {
			// TODO: handle exception
			System.out.println(e.toString());
			System.out.println("换老师或换电脑");
	
		}
		
	}
}

再一个

/*
 * 有一个圆形和长方形
 * 都可以获取面积,对于面积如果出现非法的数值,视为是获取面积出现问题
 * 问题通过异常来表示
 * 
 * 程序设计
 * 
 * 
 * */

class IllegalNumberException extends RuntimeException{
	public IllegalNumberException(String mString) {
		// TODO Auto-generated constructor stub
		super(mString);
	}
	
	
}

abstract interface Area{
	int area() throws IllegalNumberException;
}

class Circle implements Area{
	private int radius;
	public static final int π=3;
	public Circle(int radius) {
		// TODO Auto-generated constructor stub
		if(0>=radius)
			throw new IllegalNumberException("出现错误数据");
		this.radius=radius;
	}
	public int area() throws IllegalNumberException{
		int area=π*this.radius*this.radius;
		return area;
	}
}

class Rectangle implements Area{
	private int height,weight;
	public Rectangle(int height,int weight) {
		// TODO Auto-generated constructor stub
		if(0>=height||0>=weight)
			throw new IllegalNumberException("出现错误数据");
		this.height=height;
		this.weight=weight;
	}
	public int area(){
		int area=this.height*this.weight;
		return area;
	}
}

public class ExceptionTest2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Rectangle rectangle=new Rectangle(4, 3);
		System.out.println("长方形面积:"+rectangle.area());
		Circle circle=new Circle(3);
		System.out.println("圆形面积:"+circle.area());
	}

}



                                                                                                -------------------------By   仔鸡

猜你喜欢

转载自blog.csdn.net/qq_37325788/article/details/80219391