2017-03-28 4 views
-5

メソッドgetValueFormFileがあり、それが公理でintを返すと仮定します。引数を受け付けず、IOExceptionとFIleNotFoundExceptionをスローすることができます。IOExceptionsの処理

上記のgetValueFormatFileメソッドを呼び出すtry文を記述します。私はこの質問を処理するための適切な方法です

try { 
    int value = getValueFromFile(); 
} catch(FileNotFoundException e) { 

} catch(IOException e) { 

} 

持っているもの

これは、メソッドが投げることができるすべての例外を処理するようにしてください?

+5

空のキャッチブロックがある場合は、実際に*例外を処理しているわけではありません。 – Kayaman

+0

さて、あなたは 'catch(Exception e){/ * do nothing lol * /}'と一緒に行くこともできます... – domsson

+1

これは、あなたの宿題を行うためにスタックオーバーフローを使用しているようです。まず、try/catchブロックで[javadoc](https://docs.oracle.com/javase/tutorial/essential/exceptions/catch.html)を読むことをお勧めします。ウェブ上であなたを助ける多くの情報があります。スタックオーバーフローはあなたのために仕事をするためにここにはありません。 – Sunshinator

答えて

1

一般的には、スタックトレースを出力したり、エラーを記録したり、(通常は良い考えではありませんが)値をデフォルト値に設定します。

int value; 
try { 
    value = getValueFromFile(); 
} catch(FileNotFoundException e) { 
    e.printStackTrace(); 
    value = -1; // careful with this. Using -1 as an example because that's a common convention for representing an error condition 
} catch(IOException e) { 
    e.printStackTrace(); 
    value = -1; // careful with this. Using -1 as an example because that's a common convention for representing an error condition 
} 
+0

Gotcha。この提案は、記載どおりオプションです。確かにそれが保証されている状況があります、そして、私は適度に一般化された答えを提供したいと思いました。 –

+1

printStackTrace()メソッドは何をしますか? – Craigyybouy

+0

IMOあなたが大切にしたいのは、チェックされている例外をチェックし直さずに戻し、IOExceptionのようなものから回復しようとすることさえありません。 – eis

2

いいえ、例外を無視することは、ほとんどそれを処理する適切な方法ではありません。

この場合、例外の処理方法を決定する必要があります。デフォルト値を使用しますか?実行を中止しますか?値を取得するために別の方法を試してみませんか?正しい戦略を選択するかどうかは、ファイルが欠落しているかどうか、または何らかの理由で読み取れなかったかどうかによって異なりますか?

正しい処理は呼び出し元だけが知っているコンテキストに依存するため、呼び出し元が正確に処理するための例外がスローされます。