我对异常处理相对较新,这是我的问题:我正在用Java编写一个应用程序,用户必须在各个面板上的各个字段中输入数据,所有这些都在同一个框架上。每个面板都有一个保存按钮。在他们按下“保存”后,将以数据为属性创建对象。每一个setter方法都会检查数据(字符串必须少于一定的长度,整数必须以特定的间隔等),如果不正常,则抛出异常(我创建了自己的BadDataException
类型)。这些例外情况一直回到应该处理(显示)它们的框架。异常处理(或记录)
所以,这里是一个问题:如果用户在多个领域输入错误的数据,我怎么能向他展示他犯错的所有领域?现在我所得到的是第一个抛出异常的消息(我知道它应该像那样)。我是否必须在面板上添加一些检查(我认为这样做不太合适),或者有什么方法可以在按下“保存”后“记录”所有异常?如果我能做到这一点,那么我将能够将它们全部显示在主框架的标签上。
我想问题已经够清楚了,但我写了一些简单的代码来说明。
public class MyFrame extends JFrame {
private JTextField stringFieldOne;
private JTextField stringFieldTwo;
public MyFrame() {
stringFieldOne = new JTextField();
this.add(stringFieldOne);
stringFieldTwo = new JTextField();
this.add(stringFieldTwo);
JButton saveButton = new JButton();
saveButton.addActionListener(new SaveButtonListener());
this.add(saveButton);
}//constructor
private void save() {
SaveObject obj = new SaveObject();
try {
obj.setStringOne(stringFieldOne.getText());
obj.setStringTwo(stringFieldTwo.getText());
}
catch (BadDataException bde) {
//what goes here???
}
}//method
class SaveButtonListener implements ActionListener {
public void actionPerformed(ActionEvent evt) {
save();
}//method
}//class
}//class
public class SaveObject {
private String theStringOne;
private String theStringTwo;
public void setStringOne(String someString) throws BadDataException {
if (someString.length() <= 20) {
theStringOne = someString;
}
else {
throw new BadDataException("The string you introduced has more than 20 characters");
}
}//method
public void setStringTwo(String someString) throws BadDataException {
if (someString.length() <= 5) {
theStringTwo = someString;
}
else {
throw new BadDataException("The string you introduced has more than 5 characters");
}
}//method
}//class
@chiccodoro:好吧,我明白你的意思。我现在可以为我的应用程序启动异常处理。谢谢! – user3580758