2016-08-16 12 views
1

値が入っていてもいなくてもよい20列のCSVファイルを読み込もうとしていますが、コードフローを維持するために20個のtry catchを作成する必要があります制御方法。理由は以下のコードで例外を処理する複数のtryキャッチの代わりに

String a = ""; 
String b = ""; 
try{ 
    a = list.get(0); 
    b = list.get(1); 
}catch(NoSuchElementException e){} 

試みの最初の行が二行目が実行されない例外を与えた場合、私は別々のトライキャッチを持っている他のすべてのvariable.Theの理由で同様

String a = ""; loop 
try{ 
a = list.get(0); // converted the csv to list of list and iterated in 
}catch(NoSuchElementException e){} 

と同じ。

これらのn個の試行捕獲状況の代替はありますか?

おかげ

+0

ループ内でそれを行い、桁はカウンタを使用しています –

+4

開始時に 'size'のリストを確認することができます – sidgate

+0

@sidgateリストサイズはcsvの各行について同じ' 'code、1、、ee、de'です。 – codegasmer

答えて

3

あなたはヘルパーメソッドを作成できます

private String getField(List<String> list, int n) { 
    try { 
    return list.get(n); 
    } catch (NoSuchElementException e) { 
    return ""; 
    } 
} 

String a = getField(list, 0); 
String b = getField(list, 1); 

はEDIT:あなたは十分なフィールドを持っていない場合

通常あなたは例外に依存しないだろうが、以下は同じことを実現主観的にはクリーナーと感じます:

private String getField(List<String> list, int n) { 
    if (n < list.size()) { 
    return list.get(n); 
    } 
    return ""; 
} 
+0

これは正しいアプローチですが、例外の場合は空の文字列を返す代わりにいくつかの情報を記録する方が好きです。 – kukis

+0

私はむしろ例外をキャッチする代わりにリストのサイズを確認するだけです – sidgate

+0

空の文字列を返すのは、質問に記載されている動作です。私はリストのサイズをチェックすることが望ましいことに同意しますが、個々のキャッチブロックがたくさんあることを避けるヘルパーメソッドの使用法を説明したかったのです。 – beny23

関連する問題