[英]Handling exceptions in the catch block?
這可能是一個愚蠢的問題,但我在其他任何地方都找不到答案。 我有一個可以讀取和寫入文件以進行保存的類。 現在,我正在嘗試處理一些可能會出現的錯誤。 我想知道的是這是合法的還是Java的慣例:
try {
in = new ObjectInputStream(new FileInputStream(fileName));
score = (Score)in.readObject();
} catch() {
...
}
我遇到的問題是,如果文件為空,則無法讀取文件。 該程序將崩潰,因此我想知道常見或常規的做法是從catch語句在文件中創建一些數據,然后再次嘗試/捕獲它。 然后在第二個捕獲中,我可以使程序崩潰。
我要這樣做的原因是在用戶刪除文件中的數據的情況下。
如果合法,這是語法嗎?
try {
// try something here
} catch(//Exception here) {
// Create a new file and try again.
try {
// try again
} catch() {
// Crash the program
}
}
在嘗試使用它之前,為什么不檢查文件是否不存在或為空?
try {
File file = new File( fileName);
if( !file.exists() || file.length() == 0) {
// Create the file, initialize it with some default value
}
in = new ObjectInputStream(new FileInputStream( file));
score = (Score)in.readObject();
} catch() {
...
}
請注意,這是一個很小的爭用條件,在您檢查文件是否存在以及在FileInputStream
實際使用它之間,用戶可以刪除該文件。
在catch塊中進行這樣的工作通常是不好的形式。 如果您想重試失敗,請使用類似以下的循環
int retryCount = 0;
boolean success = false;
while(!success && retryCount < 2) {
retryCount++;
try {
...
success = true;
} catch (Exception ex) {
// log exception
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.