抛出异常的方法,该方法调用另一个抛出不同异常的方法(java)

抛出异常的方法,该方法调用另一个抛出不同异常的方法(java),java,exception,map,tree,try-catch,Java,Exception,Map,Tree,Try Catch,TreeCenter是一个带有方法的接口,包括maximum。在MapClass中,我试图使用EmptyTreeClass的maximum来编写maximumKey,它返回对象映射中最大的键。但是,这两种方法会引发两种不同的异常。如果maximimum捕获到异常,则树保持不变。尽管知道我需要使用maximum,但我还是有点困惑如何编写maximumKey。我需要在方法中捕获这两个异常吗 public class UnemptyTreeClass<Key, Value> impleme

TreeCenter是一个带有方法的接口,包括maximum。在MapClass中,我试图使用EmptyTreeClass的maximum来编写maximumKey,它返回对象映射中最大的键。但是,这两种方法会引发两种不同的异常。如果maximimum捕获到异常,则树保持不变。尽管知道我需要使用maximum,但我还是有点困惑如何编写maximumKey。我需要在方法中捕获这两个异常吗

public class UnemptyTreeClass<Key, Value> implements TreeInter<Key, Value> {
    private Key root;
    private Value value;
    private Tree<Key, Value> left, right;

public Key maximum() throws EmptyTreeException {
        try {
            return right.max();
        } catch (EmptyTreeException e) {
            return root;
        }
    }

您尚未在MapClass中声明root,因此无法编译以下行:

return root;

为什么在类UnemptyTreeClass in方法maximum中捕获exp并抛出相同的异常?现在,您的程序将只使用catch块。它不会将exp抛出方法。您必须捕获所有异常或将其抛出。你决定投哪一个。您还可以将它们聚合为一个异常。你能写得更具体些你想做什么吗?我想帮助你。
public class MapClass<Key, Value> {
    Tree<Key,Value> instance= EmptyTree.getInstance();

public Key maximumKey() throws NoSuchElementException{

if (instance==EmptyTree.getInstance())
            throw new NoSuchElementException();
        try {
            return instance.maximum();
        } catch (EmptyTreeException e) {
            return root; //error here
        }       
return root;