[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("在疼都要忍着不能说,因为你爸都不说,你也不能说");
}
}
} |