java-异常问题

java-异常问题,java,exception,Java,Exception,我在编译代码时遇到了一些问题 这是一个使用类值将文本保存到文件的方法 public void saveEventsToFile() throws Exception { String tmp = getEventsAsString(); value = Value.makeString(tmp); Value.saveFile(value, "\\events" + "\\" + "YEAR" + "\\" + months[MONTH] + "\\" + DAY); }

我在编译代码时遇到了一些问题

这是一个使用类值将文本保存到文件的方法

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();
        }
    });
如果我在执行的操作上添加抛出异常,我的代码将无法编译,如果没有它,我将在arentPanel.selectedBox.saveEventsToFile()上出现“Unhandled Exception”错误;线

我怎样才能编译这个?我对例外情况没有多少经验

正如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();
        }
    });

首先,如果您不使用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);
   }
}

这里要记住的是,您应该避免捕捉异常,因为您可能捕捉到比预期更多的异常。这一点很重要,因为在某些异常情况下,应用程序可以在其他情况下继续,只需关闭即可。如果保存为case,则可能会出现异常,用户可以采取措施重试该操作。如果应用程序必须关闭,因为无法再运行,请使用未经检查的(运行时)异常进行更改

在eclipse中,将鼠标悬停在错误线上,然后单击“用try-catch环绕”选项,就成功了。但还有一个问题,当我没有指定某个路径时,文件会直接保存在项目文件夹中。但是,当我在项目文件夹中指定路径时(例如“\\events”+“\\\”+“YEAR”+“\\\”+months[月]+“\\”+天),我会得到一个“文件未找到异常”。如何指定此路径?请将答案标记为正确,并为此问题打开一个新问题。nvm我找到了:)