質問: fr.read(); System.out.print((char)ch); } while (ch != -1); // fr.close(); // ここに書く場合はコンパイルエラー発生せず。 } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (fr != null) fr.close(); // ここに書くとコンパイルエラー } catch (Exception e) { e.printStackTrace(); } } } } ``` ### 試したこと BufferReaderクラスなどでも同様にtryブロックでは問題ないが Finallyブロック内に書くとコンパイルエラーになってしまう。 ### 補足情報(FW/ツールのバージョンなど) Eclipse Java EE IDE for Web Developers. Version: Oxygen.2 Release (4.7.2) Build id: 20171218-0600 上記Ver.のEclipseで作成しました。
回答: frは**tryブロックの中で宣言されている為、tryを抜けた後のfinallyブロックでは参照できません。** tryに入る前に宣言しておきましょう。