我们正在尝试实现某种国际象棋游戏,并使用构造函数定义了一个抽象类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。您仍然可以在方法声明中记录您的异常,但是您并没有强迫客户端代码处理该异常。

10-08 00:23