xception, UnknowException {
if (current > 2) {
accept = true;
System.out.println("accept " + current);
} else if (current >= 0)
throw new NotBigEnoughException("reject " + current);
else
throw new UnknowException("i don''t know how to deal with "
+ current);
}
之所以覆盖这个方法的目的是对父类的passing()方法做进一步扩展,对0<=current<=2的情况抛出NotBigEnoughException,而对current<0的情况则抛出一个新的异常UnknowException。
此时,提供两种解决方法。
方法一,使用恢复异常机制,overrding passing()方法,这样可以处理掉所有的异常,因此不需要异常声明。
ok in: Inheritor.java
//sure passing(),so not have to throw exceptions
public void passing(){
while (!passed()) {
try {
super.passing();
} catch (NotBigEnoughException e) {
increment();
}
}
}
Java:如何处理异常(3)
时间:2011-03-14 zhangjunhd
方法二,写一个加强的passing()方法,即fortifiedPassing(),对于在父类passing()中捕获的异常,进行再判断。如果是0<=current<=2的情况则重新抛出NotBigEnoughException,如果是current<0的情况则抛出一个新的异常UnknowException。
ok in: Inheritor.java
public void fortifiedPassing() throws NotBigEnoughException, UnknowException{
try {
super.passing();
} catch (NotBigEnoughException e) {
if(current>=0)
throw e;
else
throw new UnknowException("i don''t know how to deal with "
+ current);
}
}
Inheritor.java
package com.zj.exception;
import com.zj.exception.types.NotBigEnoughException;
import com.zj.exception.types.UnknowException;
public class Inheritor extends Recover {
public Inheritor(int cur) {
super(cur);
}
//couldn''t throws new exceptions where not found in its base class
/**
public void passing() throws NotBigEnoughException, UnknowException {
if (current > 2) {
accept = true;
System.out.println("accept " + current);
} else if (current >= 0)
throw new NotBigEnoughException("reject " + current);
else
throw new UnknowException("i don''t know how to deal with "
+ current);
}*/
//sure passing(),so not have to throw exceptions
public void passing(){
while (!passed()) {
try {
super.passing();
} catch (NotBigEnoughException e) {
increment();
}
}
}
public void fortifiedPassing() throws NotBigEnoughException, UnknowException{
try {
super.passing();
} catch (NotBigEnoughException e) {
if(current>=0)
throw e;
else
throw new UnknowException("i don''t know how to deal with "
+ current);
}
}
public static void main(String[] args) {
// not re
|