2011-08-16 8 views
4

私は開いて解析するファイルのリストを含むベクトルを持っており、私の場合には何が最良の選択であるか疑問に思っていました。Javaでキャッチしようとすると最適な選択

私がやり始めた何この:

for (int i =0 ; i< files.size() ; i++) 
{ 
    System.out.println("n°" + i + " : " + files.elementAt(i)); 
    try 
    { 
     // open the files 
    } 
    catch (Exception e) { 
    // TODO: handle exception 
    } 
} 

か、この1についてどう思いますか?

try 
{ 
    for (int i =0 ; i< files.size() ; i++) 
    { 
     System.out.println("n°" + i + " : " + files.elementAt(i)); 
     // open the files  
    } 
} 
catch (Exception e) { 
    // TODO: handle exception 
} 

おかげ

EDIT:

My purpose is that, when I try to open a file that doesn't exist I must throw something or maybe write the exception in a log file and continu opening the other files.

->だから私は、最初のソリューションは、私のcituationで最高だと思いますか?

+0

2011年に 'Vector'を使用していて、' List'や 'Set'ではないのはなぜですか? –

+0

可能な複製[しようとすると...ループの内側か外側に入る?](http://stackoverflow.com/questions/141560/should-try-catch-go-inside-or-outside-a-loop) –

+0

文字列を格納するだけの場合、Vectorを使用する際の問題点は何ですか? –

答えて

3

ファイル7が壊れている場合には、そのようにして、8-10(または何でも)からデータを取得できます。そして彼らがすべて腐っていても、あなたは何も失うことはありません。

私は、アプリケーションがどのように動作するかを考えます。 1つのファイルが間違っていれば、すべてのものがぎこちない停止になりますが、2番目の方が適切ですが、一般的に私は最初の方が有用であることがわかりました。

2

私は最初の方が良いと思います。その利点は、あるファイルに例外があると、他のファイルを解析することです。

編集によれば、2番目のオプションは適合しません。例外がスローされたときにループから抜け出します。

0

これは同じではありません!

最初のケースでは、例外をキャッチすると次の繰り返しがあります。 2番目のケースでは、例外をキャッチしても次の繰り返しはありません!

0

これはすべてあなたが達成したいと思うものに依存します。 すべてのファイルを試したい場合は、最初のオプションを選択する必要があります。 1つのエラーが発生した場合には、秒を選択するのが良い方法です。

0

2回目は、try/catchを複数回繰り返して実行する際のオーバーヘッドを回避しますが、最初の動作とは動作が異なります。 1つのファイルにエラーがある場合、最初のケースでは残りのファイルを引き続き試みることができます。第2の場合、それ以上の処理はすべて終了する。

どの方法を使用するかは、これらの動作のうちのどれを使用するかに完全に基づいている必要があります。

0

注意してください:これらは同等ではありません!ファイルの1つが失敗した場合、最初のフォーム(ループ本体にtry/catchで)は他のファイルを処理できますが、2番目のフォームは他のファイルを破棄します。

最初に必要な機能に注目してください。

その後try/catchにわずかなオーバーヘッドが発生するため、2番目のフォームは少し速くなりますが、初期のファイルが失敗した場合に残りのファイルを開くことができないというコストがかかります。

0

これは、あなたが何をしたいかによってまったく異なります。最初の例では、ファイル6,7,8で続きます。

2つ目の例では、ファイルが失敗するまで続きますその後、それはあきらめる。あなたが望む行動を知っているなら、どちらを選ぶかも分かります。

0

オプション1:

これは、すべてのファイルを開くには、たとえ1つ(または複数)の原因の例外をしようとします。

オプション2:

これは、任意の単一のファイルには例外が発生した場合、ファイルを開こうとすると停止します。

あなたは一つのファイルに障害が発生したた場合、すべてが失敗することを想定することができれば - 最初のオプションで行く、またはすべてのファイルが正しく動作するために必要な場合 - 最初のオプションで行くが、あなたがしたい場合できるだけ多くのファイルをロードする - 2番目のオプションを使用する。

関連する問題