我们正在尝试实现某种国际象棋游戏,并使用构造函数定义了一个抽象类Piece:
public Piece(String name) throws EmptyStringException{
if(name.length()<=0)
throw new EmptyStringException();
pieceName = name;
}
扩展类可能如下所示:
public King(boolean white) throws EmptyStringException{
super("King", white);
}
这里的“问题”是,如果我想创建一个新的国王,我必须写:
try {
Piece king = new King(true);
} catch(EmptyStringException e){
e.printStackTrace();
}
而不是简单得多:
Piece king = new King(true);
因此,即使我只是不能创建EmptyStringException,我仍然必须尝试/捕获该异常。
我该如何解决这个问题,这样我仍然可以将EmptyStringException扔成碎片,但是不必每次需要创建新的棋子时都尝试/抓住?
最佳答案
使用运行时异常:
public class EmptyStringException extends RuntimeException
而不是简单的
Exception
。您仍然可以在方法声明中记录您的异常,但是您并没有强迫客户端代码处理该异常。