我對異常處理相對較新,這是我的問題:我正在用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