我有一个这样的语句,它会给出一个错误“缺少返回语句”。但是我按你所见的那样分配了返回语句。这是错误的吗?
public int compareTo (Object o)
{
try
{
Sports m = (Sports)o;
if(this.date.before(m.date)&& o instanceof x)
{
return -1;
}
else if(this.date.equals(m.date)&& o instanceof x)
{
return 0;
}
else
{
return 1;
}
}
catch(IllegalArgumentException e)
{
System.out.print("Not an instance of x class");
}
}
答案 0 :(得分:5)
是的 - 如果发现IllegalArgumentException
,则表示您没有返回任何内容。
老实说,抓住IllegalArgumentException
很少非常。你为什么要把它抓到这里?
答案 1 :(得分:2)
如果你想使用catch
int returnResult = -99;
try{
returnResult = -1 ;
else
returnResult = 0;
else
returnResult = 1;
} catch(IllegalArgumentException e) {
System.out.print("Not an instance of x class");
}
return returnResult;
答案 2 :(得分:0)
它引发了一个编译器问题,因为有一个没有返回的场景:抛出异常时。如果你真的要捕获IllegalArgumentException,你需要在catch之后添加一个return语句。
答案 3 :(得分:0)
this.date.before(m.date)
它是唯一可以生成IllegalArgumentException的代码段。你确定要抓住它吗?如果您只是想确定o是x的实例,请执行以下操作:
public int compareTo (Object o){
if(o instanceof x) {
Sports m = (Sports)o;
if(this.date.before(m.date)&& o instanceof x)
return -1;
else if(this.date.equals(m.date)&& o instanceof x)
return 0;
else
return 1;
}
else {
System.out.print("Not an instance of x class");
return 2;
}
}