我是Java的新手,遇到了一个无法解决的问题。

这是我的代码:

// Ex2 is a child of Ex1
public T method(someType someArg) throws Ex1{
  try{
    someFunc() // Throws both Ex1 and Ex2
    T ret = someOtherFunc() //Throws Ex1, cannot declare/initialize ret outside
    return ret
  } catch(Ex2){
    //do something
  } catch(Ex1){
    //do something
  }

}


现在,java抱怨缺少返回类型,而当我删除Ex2处理/捕捉时,它不抱怨。

最佳答案

您的方法必须返回T,您可以添加return null;作为最后一条语句。或者,像这样修改ret的可见性(及其默认值)

public T method(someType someArg) throws Ex1{
  T ret = null;
  try{
    someFunc(); // Throws both Ex1 and Ex2
    ret = someOtherFunc();
  } catch(Ex2){
    //do something
  } catch(Ex1){
    //do something
  }
  return ret;
}

09-27 20:42
查看更多