2011-05-20 5 views
0

"return statementが見つからない"というエラーが表示されますが、私はreturn文を間違って指定していますか?Java Langでcatch文を試してみよう

+1

が適切なブレースまたは少なくともインデントを使用してみてください、このコードはまた、非常に読みやすいではありません。 – Bhushan

+0

複数の返り値が不正な形式で、 'catch'ブロックの後の1回の返信で十分です –

答えて

5

はい - IllegalArgumentExceptionが検出された場合、何も返されません。

正直言って、非常にIllegalArgumentExceptionをキャッチすることはまれです。なぜここでそれをキャッチしていますか?

+0

oがx.isntクラスのインスタンスでない場合、その例外を捕捉したいxがインスタンスでない場合は不正な引数例外をスローすることができますxクラスの –

+1

@ cane-rここにいくつかの混乱があります。 'instanceof'は例外をスローしません。単に' true'または 'false'を返します。キャスト*は例外をスローしますが、 'IllegalArgumentException'ではなく' ClassCastException'をスローします。いくつかのメソッドは、間違った引数型のために 'IllegalArgumentException'を投げることを選ぶかもしれません。最後に、xとは何ですか?クラスのプレースホルダですか? –

+0

@robin私は間違っているかもしれません。私はこれを行う:オブジェクトoがxクラスのインスタンスではない場合、IllegalArgumentException.itをスローします。プログラムでは2倍の整数を入力しますが、int.soを入力する必要があります。 intと同様の例外を入力すると、クラスxのインスタンスであるオブジェクトを入力する必要があります。 –

0

例外がスローされると、リターンのないシナリオが存在するため、コンパイラの問題が発生しています。実際にIllegalArgumentExceptionを捕まえる場合は、catchの後にreturn文を追加する必要があります。

+0

キャッチブロックの後、またはキャッチブロックの最後に。 –

+0

キャッチブロック – bigGuy

2

uは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; 
0
this.date.before(m.date) 

を使用したい場合には、IllegalArgumentExceptionを生成することができ、コードの唯一の作品です。あなたはそれをキャッチしたいと思いますか?あなただけのことを確認したい場合は、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; 
} 

}

関連する問題