私のプログラムには、内部リスナー クラスがあります。その目的は、ファイルを開いてそこからデータを読み取ることです。
// This declaration is outside of the inner class.
SimulationModel model;
// End of declarations.
class OpenListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
JFileChooser fileOpen = new JFileChooser();
fileOpen.showOpenDialog(gui);
if (fileOpen.getSelectedFile() != null) {
try (FileInputStream fis = new FileInputStream(fileOpen.getSelectedFile());
ObjectInputStream ois = new ObjectInputStream(fis)) {
Object modelObject;
modelObject = ois.readObject();
model = (SimulationModel) modelObject;
consolePanel.printToConsole("File opened.\n\n");
// Do stuff with model object of SimulationModel class.
// About 10 lines of code, mostly reading from model.
} catch (IOException | ClassNotFoundException ex) {
consolePanel.printToConsole("Error during file opening.\n\n");
}
}
}
}
コメントアウトしたコード行 (// Do stuff (...)) は例外をスローしませんが、ファイルが正しく読み取られなかった場合、これらの行は実行されません。そのため、I/O コードとコメントアウトされたコードの両方を try ブロックに入れました。ただし、例外をスローしないコードを try ブロックに配置することには疑問があります。
コメントアウトされたコードが実行されないようにするためのより洗練された方法はありますが、例外は I/O 操作を実行するコードでのみチェックされますか?