我是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;
}