2016-05-27 6 views
-2

何年もtry catch catchブロックでスタックトレースを出力していますが、例外が発生してもコードを実行できる方法があります。私たちはコードを進めることができますtry try catchブロックwith例外

String [] files= {"a.xml","b.xml","c.xml","d.xml"}; 

public static void loadAll() 
{ 
    try 
    { 
     for(int i=0; i< files.length;i++) 
     { 
      File file = new File(files[i]); 
      FileInputStream fileInput = new FileInputStream(file); 
      properties[i] = new Properties(); 
      properties[i].loadFromXML(fileInput); 
      fileInput.close(); 
     } 
    } 
    catch(Exception e) 
    { 

    } 
} 

このコードは、ファイルが見つからないとすぐに終了します。私は例外があっても続行したい、私は例外の繰り返しの処理をスキップしたい。出来ますか。

P.S.私はその基本的な質問を知っていますが、私はそれを学ばなくてはなりません。

+1

本当にあなたのコードのtry-catchステートメントをどこか別の場所に移動するよう求めていますか?それを試してみてください。コードを移動します。あなたのコードです。 –

+2

@Warren P、try-catchの使い方を知っていたら、彼はここにいません。彼にいくつかの余裕をつけてください。 –

+1

@JeremyKato新しいユーザーがJavaの非常に堅い精神的イメージを持っていること、そして彼らが例/スプーンフィードソリューションを与えられていれば、(高校生を過ごす経験から)学ばないという共通の問題です。チュートリアルの説明の概念は長い道のりになりますが、スタックオーバーフローの形式にもメッシュはありません。 – hexafraction

答えて

5
は、ループ内のtry/catchを移動

:コードが実際にExceptionをスローしない限りExceptionを引くことは、悪いこと

for(int i=0; i< files.length;i++) 
{ 
    try { 
    // Do the thing which might throw an exception. 
    } catch (Exception e) { 
    // Handle it, but don't break. 
    } 
} 

注意を。あなたはそれのタイプを締めてください。 IOExceptionを使用してください。

あなたはまた、使用する必要がありますFileInputStreamが閉じていることを保証するために、リソース-してみてください:あなたは、Java 6でまだなら、

try (FileInputStream fileInput = new FileInputStream(file)) { 
} 
// No need to close explicitly. 

するか、またはそれ以前のバージョン、使用finally

FileInputStream fileInput = new FileInputStream(file); 
try { 
    // ... 
} finally { 
    fileInput.close(); 
} 
1

私はこれが役に立ちそうです。

catch(Exception e) { 
    if ("Something you expected".equals(e.getMessage())) { 
     // do what you like to do. 
     // program won't crush in this case. 
    } else { 
     // for any kind of exception do something common. 
    } 
} 

ファイルが見つからない場合は、このようにしてください。

catch (FileNotFoundException e) { 
    //do something you want to do in this case 
} 
0

あなたが使用するフレームワークによって提供されるexception handlingメカニズムを利用するのが最善の方法です。 exception handlerで例外処理コードを区切ることができます。

関連する問題