/** * 要求:老师用电脑讲课发生蓝屏异常和死机异常机器处理 * * @author Administrator * */ class Teacher { private String name; private Computer com; public Teacher(String name){ this.name=name; com=new Computer(); } public void teach() throws NoPlanException{ try{ com.run(); System.out.println(name+"开始上课"); }catch(LanPingException e){ System.out.println(e.toString()); com.reset();//调用重启方法 teach(); } catch(SiJiException e){ System.out.println(e.toString()); test();//调用休息方法 throw new NoPlanException("任务完不成");//抛出不能完成任务的方法给调用者 } } public void test(){//休息方法 System.out.println("大家休息"); } } class Computer{ int status=(int)(Math.random()*3);//定义状态变量获取随机数,0表示正常,1表示蓝屏异常,2,表示死机异常 public void run()throws LanPingException,SiJiException { if(status==1){//不同情况抛出不同异常 throw new LanPingException("你的电脑蓝屏了"); } if(status==2){ throw new SiJiException("你的电脑坏掉了!"); } System.out.println("电脑运行"); } public void reset(){ System.out.println("电脑重新启动!"); status=0;//重启后电脑正常 } } class LanPingException extends Exception{//蓝屏异常 LanPingException(String s){ super(s); } } class SiJiException extends Exception{//电脑不会用异常 SiJiException(String s){ super(s); } } class NoPlanException extends Exception{//任务完不成的异常 NoPlanException(String s){ super(s); } } public class ExceptionApplication { public static void main(String[] args) { Teacher t=new Teacher("李老师"); try{//获取任务完不成的异常,然后处理 t.teach(); }catch(NoPlanException e){ System.out.println(e.toString()); System.out.println("换一个老师"); } } }
//若status为0,
电脑运行
李老师开始上课
//若status为1
LanPingException: 你的电脑蓝屏了
电脑重新启动!
电脑运行
李老师开始上课
//若status为2
SiJiException: 你的电脑坏掉了!
大家休息
NoPlanException: 任务完不成
换一个老师