/*需求
毕老师用电脑上课 。
开始思考上课中出现的问题。
比如问题是
电脑蓝屏
电脑冒烟
要对问题进行描述,封装成对象
可是当冒烟发生后,导致讲课进度无法继续
这时候出现讲师问题:课时计划无法完成
*/
class LanPingException extends Exception //异常可以处理,Exception
{
LanPingException(String msg)
{
super(msg);
}
}
class MaoYanException extends Exception //异常不可以处理,需要停下来,RuntimeException
{
MaoYanException(String msg)
{
super(msg);
}
}
/*
可是当冒烟发生后,导致讲课进度无法继续
这时候出现讲师问题:课时计划无法完成
*/
class NoPlanExceptio extends Exception
{
NoPlanExceptio(String msg)
{
super(msg);
}
}
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 reset()
{
state = 1;
System.out.println("电脑重启");
}
}
class Teacher
{
private String name;
private Computer com;
Teacher(String name)
{
this.name = name;
com = new Computer();
}
public void prelect()throws NoPlanExceptio
{
try
{
com.run();
}
catch (LanPingException e)
{
com.reset();
}
catch (MaoYanException e)
{
test();
//throw e; //处理不了,抛出去,但是并不能解决问题 ,解决问题方案可以新建立问题解决方法
throw new NoPlanExceptio("课时计划被拖延"+e.getMessage()); //函数结束标识,下面的语句统统运行不了
}
System.out.println("讲课");
}
public void test()
{
System.out.println("做练习");
}
}
class ExceptionTest
{
public static void main(String[] args)
{
Teacher t = new Teacher("毕老师");
try
{
t.prelect();
}
catch (NoPlanExceptio e)
{
System.out.println(e.toString());
System.out.println("换电脑或者放假");
}
}
}
网友评论