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:

  1. Все работает нормально, кроме закрытия input,
  2. 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) ...
    }
}
Другие вопросы по тегам