/**
* 描述问题
* 电脑冒烟
* 电脑蓝屏
* //异常对于谁接受,谁就处理
*/
//自定义异常
//蓝屏
class LanPingException extends Exception
{
public LanPingException(String smg) {
super(smg);
}
}
//冒烟
class MaoyanException extends Exception
{
public MaoyanException(String smg)
{
super(smg);
}
}
//课时无法继续
class NoPlan extends Exception
{
public NoPlan(String smg)
{
super(smg);
}
}
//老师对象
class Teacher
{
private String name;
private Computer cmpt;
private Computer cmpt2;
public Teacher(String name) {
this.name =name;
cmpt=new Computer();
cmpt2=new Computer();
}
public void lesson() throws MaoyanException,NoPlan //声明异常
{ //提供预处理方式
try
{
cmpt.run();
System.out.println("讲课");
}
catch(LanPingException e)
{
System.out.println(e.toString());
cmpt.reset();//重启之后,
lesson();//继续上课
}
catch(MaoyanException e)
{
System.out.println(e.toString());
//自己处理不了的异常,抛出
//throw e;
test();
throw new NoPlan("电脑故障,无法继续");
//换个电脑
//cmpt2.run();
}
}
public void test()
{
System.out.println("上自习吧,等着把你");
}
}
//电脑对象
class Computer
{
int state=2;
void run() throws LanPingException,MaoyanException
{
if(state==1)
throw new LanPingException("蓝屏啦!!!");//抛出异常
if(state==2)
throw new MaoyanException("冒烟啦,挂啦!!!");//抛出异常
else
System.out.println("电脑运行");
}
void reset()
{
System.out.println("重启开机");
state=0;
}
}
public class ExceptionTest {
public static void main(String[] args) throws MaoyanException
{
Teacher t=new Teacher("毕老师");
try
{
t.lesson();
}
catch(NoPlan e)//拿到异常对象,在处理
{
System.out.println("换人");
}
}
}