java - 异常问题

时间:2014-03-09 17:52:08

标签: java exception

我在编写代码时遇到了一些麻烦。

这是一个使用类Value将文本保存到文件

的方法
public void saveEventsToFile() throws Exception {
    String tmp = getEventsAsString();
    value = Value.makeString(tmp);
    Value.saveFile(value, "\\events" + "\\" + "YEAR" + "\\" + months[MONTH] + "\\" + DAY);
}

这是另一个对象的构造函数的一部分。我在一个按钮上有一个actionlistener(OK),当按下该按钮时,我想调用saveEventsToFile方法。

OK.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            int h, m;
            h = (Integer) hourSpinner.getValue();
            m = (Integer) minuteSpinner.getValue();
            parentPanel.createNewEvent(parentPanel.selectedBox, parentWindow,       textPane.getText(), h, m);
            parentPanel.selectedBox.saveEventsToFile();
            dispose();
        }
    });

如果我在actionPerformed上添加throws Exception,我的代码无法编译,如果没有它,我会在arentPanel.selectedBox.saveEventsToFile()上出现“Unhandled exception”错误;线

我怎么能让这个编译?我没有太多的例外经验。

2 个答案:

答案 0 :(得分:1)

正如donfuxx所说:

OK.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            int h, m;
            h = (Integer) hourSpinner.getValue();
            m = (Integer) minuteSpinner.getValue();
            parentPanel.createNewEvent(parentPanel.selectedBox, parentWindow,       textPane.getText(), h, m);
            try {
                parentPanel.selectedBox.saveEventsToFile();
            } catch (ExeptionThaIsThrownBySaveEventsMethod e) {
                // display error
            }
            dispose();
        }
    });

答案 1 :(得分:0)

首先,如果您不使用ActionEvent的任何特定元素,请在您拥有的类的主体中移动方法的逻辑。

OK.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {

                Integer h = (Integer) hourSpinner.getValue());
                Integer m = (Integer) minuteSpinner.getValue(); 

             saveEventsToFile(h,m)
              dispose();
        }
    });

private void saveEventsToFile(Integer hour, Integer minute) {

   if(hour == null || minute == null) {
     throw new IllegalArgumentException("The parameters must not be null.")
   }

   parentPanel.createNewEvent(parentPanel.selectedBox, parentWindow, textPane.getText(), h,m);

   try {
     parentPanel.selectedBox.saveEventsToFile();
   }catch(ExeptionThaIsThrownBySaveEventsMethod e) {
     throw new IllegalStateException(e);
   }
}

这里要记住的事情是你应该避免捕捉异常,因为你可能会捕获超过预期。这很重要,因为在一些例外情况下,应用程序可以继续执行其他只需要关闭。如果保存了一个例外,那么用户可以做一些事情来重试该操作。如果应用程序必须关闭而无法再操作,则更改使用未经检查(运行时)异常。