Java: различать чтение и закрытие IOException?
Вот упрощенный код:
public static void cat(File file) {
try (RandomAccessFile input = new RandomAccessFile(file, "r")){
String line = null;
while ((line = input.readLine()) != null) {
System.out.println(line);
}
return;
} catch(FileNotFoundException a){
;//do something to recover from this exception.
}catch(IOException b){
;//distinguish between close and readLine exception.
}
}
Есть две ситуации, когда мы можем получить IOEception
:
- Все работает нормально, кроме закрытия
input
, readLine
броски иIOException.
Так как же отличить эти две ситуации? Есть ли хороший способ сделать это? Или я должен быть сокращен до сравнения строк сообщения об исключении, чтобы различать эти два IOException
?
Спасибо! Я просто не могу найти легкий способ сделать это.
1 ответ
Решение
Вы можете сделать флаг прямо перед возвращением
public static void cat(File file) {
boolean readAll = false;
try (RandomAccessFile input = new RandomAccessFile(file, "r")){
String line = null;
while ((line = input.readLine()) != null) {
System.out.println(line);
}
readAll = true;
return;
} catch(FileNotFoundException a){
;//do something to recover from this exception.
}catch(IOException b){
;//distinguish between close and readLine exception.
if (readAll) ...
}
}