A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

[Java] 纯文本查看 复制代码
//疼异常

public class PainExecption extends Exception{
	
	public PainExecption() {
		// TODO Auto-generated constructor stub
	}
	
	public PainExecption(String message) {
		super(message);
	}
}

//牙疼异常

public class ToothPainException extends PainExecption{

	public ToothPainException() {
		// TODO Auto-generated constructor stub
	}
	
	public ToothPainException(String message) {
		super(message);
	}
}

//舌头疼异常

public class TonguePainException extends PainExecption{

	public TonguePainException() {
		// TODO Auto-generated constructor stub
	}
	
	public TonguePainException(String message) {
		super(message);
	}
}

//大门牙疼异常

public class BigToothPainException extends ToothPainException{

	public BigToothPainException() {
		// TODO Auto-generated constructor stub
	}
	
	public BigToothPainException(String message) {
		super(message);
	}
}

//门牙疼异常

public class FrontToothPainExcption extends ToothPainException{

	public FrontToothPainExcption() {
		// TODO Auto-generated constructor stub
	}
	
	public FrontToothPainExcption(String message) {
		super(message);
	}
}

//测试类:父类

public class Father {

	//吃的方法
	public void eat() throws ToothPainException {
		throw new ToothPainException("吃到一个石子");
	}
	
	//喝的方法
	public void drink() {
		System.out.println("喝什么都没问题");
	}
}

//测试类:子类

public class Son extends Father {

	// (a)验证: 重写方法不能抛出与父类平级的其他异常
	//i.重写父类的eat方法,抛出与牙疼平级舌头疼异常,编译报错,说明这句话是对的
	/*public void eat() throws TonguePainException {
		
	}*/
	
	//(b)验证: 重写方法不能抛出比父类高级的异常
	/*public void eat() throws PainExecption {
		
	}*/
	
	//(c)验证:重写方法: 可以抛出和父类同样的异常
	/*public void eat() throws ToothPainException {
		throw new ToothPainException("牙疼");
	}*/
	
	//(d)验证:重写方法: 可以抛出父类抛出异常的子类异常.
	/*public void eat() throws BigToothPainException {
		throw new BigToothPainException("大门牙疼");
	}*/
	
	//(e)验证: 重写方法: 可以抛出多个 "父类抛出异常的子类异常".
	/*public void eat() throws BigToothPainException,FrontToothPainExcption {
		throw new FrontToothPainExcption();
	}*/
	
	//(f)验证:父类不抛出异常,子类也不能抛出异常(编译时异常)
	/*public void drink() throws ToothPainException {
		
	}*/
	
	//(g)验证: 如果子类内部抛出了异常(或调用抛出异常的方法)只能自己处理,不允许向外抛.
		 /* i.重写父类的drink方法
			ii.输出喝到了100度的水
			iii.抛出舌头疼异常
			iv.这个时候编译报错
			v.把上面两句代码放到try代码块中
			vi.在catch代码块中打印异常信息
			vii.编译通过.*/
	
	/*public void drink() throws TonguePainException{
		System.out.println("喝了100度的水");
	}*/
	
	/*public void drink() {
		try {
			System.out.println("喝了100度的水");
		} catch (TonguePainException t) {
			t.printStackTrace();
		}
	}*/
	
	public void drink() {
		try{
			int a = 0;
			
			if(a==-1) {
				throw new TonguePainException();
			}
			System.out.println("到100度的热水了");
			
		} catch (TonguePainException ex) {
			System.out.println("在疼都要忍着不能说,因为你爸都不说,你也不能说");
		}
	}
	
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马