読者です 読者をやめる 読者になる 読者になる

try-catchの嵐

Program

インターン先でも遭遇したんだけど、今日聞いた話だと身近にもこんなコードがあるらしい・・・

// 宣言
String line = null;
BufferedReader br = null;
InputStreamReader isr = null;
FileInputStream fis = null;

// ファイルのオープン
try {
    fis = new FileInputStream("hoge.txt");
} catch (IOException e) {}
try {
    isr = new InputStreamReader(fis);
} catch (Exception e) {
    if (fis != null) {
        try { fis.close(); } catch (IOException ex) {}
    }
    throw e;
}
try {
    br = new BufferedReader(isr);
} catch (Exception e) {
    if (fis != null) {
        try { fis.close(); } catch (IOException ex) {}
    }
    if (isr != null) {
        try { isr.close(); } catch (IOException ex) {}
    }
    throw e;
}

// 処理本体
while (true) {
    try {
        line = br.readLine();
        if (line == null) {
            break;
        }
        // 何か処理
        System.out.println(line.toUpperCase());
    } catch (IOException e) {
        // エラー時のファイルのクローズ
        try {
            fis.close();
        } catch (IOException ex) {}
        try {
            isr.close();
        } catch (IOException ex) {}
        try {
            br.close();
        } catch (IOException ex) {}
        return;
    }
}

// 正常終了時のファイルのクローズ
try {
    fis.close();
} catch (IOException e) {}
try {
    isr.close();
} catch (IOException e) {}
try {
    br.close();
} catch (IOException e) {}

このコードはJavaだけど、聞いたのはABAPのコード。なんで○○○のコンサルはこんなXXXXばっかなんだろう。
いや、○○○のコンサルだけじゃなくて、コンサルは基本XXXXな気がしなくもない。