尝试java语言中的catch语句

时间:2011-05-20 13:32:14

标签: java try-catch

我有一个这样的语句,它会给出一个错误“缺少返回语句”。但是我按你所见的那样分配了返回语句。这是错误的吗?

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");
    }
}

4 个答案:

答案 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; 
}

}