/**
* 描述问题 * 电脑冒烟 * 电脑蓝屏 * //异常对于谁接受,谁就处理 *///自定义异常
//蓝屏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("换人"); } }}