2017-03-28 163 views
-5

假設有一個getValueFormFile方法,它是公共的並返回一個int。它不接受任何參數,並且能夠拋出IOException和FIleNotFoundException。處理IOException異常

編寫一個調用上述getValueFormatFile方法的try語句。一定要處理所有的方法可以拋出異常,

這是我

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

} catch(IOException e) { 

} 

這是處理問題的正確方法?

+5

當你有空的catch塊時,你並不真正*處理異常。 – Kayaman

+0

嗯,你也可以用'catch(Exception e){/ *什麼也不做lol * /}'去...... – domsson

+1

這聽起來像是你正在使用Stack Overflow來做你的功課。我建議先閱讀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

不,忽略異常幾乎不是處理它們的正確方法。

在這種情況下,您必須確定處理異常的方式。你想使用默認值嗎?你想中止執行嗎?你想嘗試一種不同的方法來獲得價值嗎?選擇正確的策略取決於文件是否丟失或是否由於其他原因而不能讀取?

由於正確的處理取決於調用者只知道的上下文,所以引發了異常以便調用者進行處理。