-3

潜在的なエラーをスローするコードがいくつかあり、これらをキャッチしてからfinallyブロックにジャンプします。ここでは「疑似」形式です。

private boolean myMethod(ResultSet rs1, ResultSet rs2){

Vector<String> temp = new Vector<String>();

try{

//add info into temp while condition is true
while(true){temp.add(information);}//potentially throws an SQL error

//test my temo object for some codition
if(false){throw InternalError();}


}catch (SQLException e){
     //send error message
}
catch (InternalError e){
     //send error message
}

finally{
//whatever happens I need to send a result of some sort!

if(temp.size() > 1){
   //create class member variable from this info
}

//send a message explaining that an error has occurred.

//this is the message to say if things have worked or not, so as the
//calling code can handle an re-run this method until this value returns true.
return booleanValue
}//end finally


}//end method

この場合、このエラーメッセージが何を意味するのか正確にはわかりません。

私は通常、それらをスローするメソッド内で例外を処理しますが、この場合、例外を処理するのではなくスローし、カスタム例外で両方のエラーをキャッチする必要がありますか?

私が送信する最初の2つのメッセージは、主に開発目的であり、それらを処理する必要があるためです。私のfinallyブロックのメッセージは、最終的にユーザーへのメッセージで構成され、状況の確認、変更、中止、またはこの状況への移行方法の変更をユーザーに求めます。

コンパイラメッセージを「削除」するにはどうすればよいですか。コード内の警告を抑制するのは好きではありません。チェーンのさらに下流で何かを抑制する可能性があるという意味が気に入らないためです。また、抑制はメソッド全体に対するものであり、これだけに追加することはできません。コードの小さなブロック。

私の状況について何かアドバイスはありますか?

前もって感謝します。

edit1:コメントを反映するために、申し訳ありませんが、if(test){}の閉じ中括弧と同じ正しいリターンタイプ(ばかげた間違い)を入れるのを忘れました。

PS。「反対票を投じた」人には、コメントを投稿して、反対票を投じる前に編集する機会を与えてください。ありがとう。また、私のコードでは、これらのことは私に問題を与えていません。投稿中の脳と指の間の「クエルティスクリプトの誤動作」のケースです。

4

4 に答える 4

7

breakcontinue * return *、およびthrowは、ステートメントの突然の完了です。最終ブロックの外に戻る必要があります。さらに、voidメソッドで戻ります。

于 2012-09-10T08:08:49.510 に答える
5

コードをフォーマットした場合、finally句がの中にありcatch、どのtry句にもリンクされていないことがわかります。

あなたが持っている必要があります

try {

} catch {

} finally {

}

ではなく

try {

} catch {
     finally {

    }
}
于 2012-09-10T08:06:33.543 に答える
4

メソッドの戻りタイプはvoidであり、にreturnステートメントreturn booleanValueがありますfinally block。私はfinallyブロックを使用して非Javaリソースを閉じます。

値を返したい場合は、tryブロックまたはcatchブロックで返すか、の外側ではtry{} catch{}なく、で返しますfinally{}

于 2012-09-10T08:06:31.913 に答える
4

これは、 finallyブロックにreturnステートメントがあるためです。これはお勧めできず、不適切なコーディングスタイルと見なされます。

于 2012-09-10T08:09:10.687 に答える