/*
需求:毕老师用电脑上课
开始思考上课中出现的问题。
比如问题是:
电脑蓝屏。
电脑冒烟。
要对问题进行描述,封装成对象。
可是当冒烟发生后,出现讲课进度无法继续。
出现了讲师的问题。课时计划无法完成。
*/
//蓝屏发生以后能处理,就要标示出去
class LanPingException extends Exception
{
LanPingException(String message)
{
super(message);
}
}
//冒烟异常
class MaoYanException extends Exception
{
MaoYanException(String message)
{
super(message);
}
}
//无法完成计划异常
class NoPlanException extends Exception
{
NoPlanException(String msg)
{
super(message);
}
}
class Computer
{
private int state = 1;//1代表正常运行
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 cmpt;
Teacher(String name)
{
this.name = name;
cmpt = new Computer();
}
public void prelect()throw NoPlanException
{
try
{
cmpt.run();
}
catch (LanPingException e)
{
//重启就将状态恢复到1了
cmpt.reset();
}
catch (MaoYanException e)
{
test();
throw new NoPlanException("课时无法继续"+e.message());
//test();写到throw上面即可.提示无法访问,一遇到问题就抛出去了,throw单独出现的时候下面别写语句。因为它就是函数结束标示了。
//return 也是如此
}
System.out.println("讲课");
}
public void test()
{
System.out.println("练习");
}
}
class ExceptionTest
{
public static void main(String[] args)
{
//System.out.println("Hello World!");
Teacher t = new Teacher("毕老师");
try
{
t.prelect();
}
catch (NoPlanException e)
{
System.out.println(e.toString());//输出电脑冒烟了
System.out.println("换老师或者放假");
}
}
}
为什么会报下面的错误呢?没找出原因在哪,求解答.....
|