总的初学者问题,但是在查看如何在Java GUI中使用异常处理程序方面,我遇到了一些概念上的困难。
我在事件监听器上有以下代码,等待按下按钮。基本上,如果他们输入的内容不是整数,那么它就不能成为客户ID,因此我有一个异常处理程序来检查是否可以将其解析为整数。如果不能,则将错误消息放入标签。但是,我该怎么办?此刻,它显然继续到了finally块,并将CustomerID输入为0,因为这是它的初始设置。
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
int custID = 0;
String custName = "";
String custAddress = "";
String custEmail = "";
String custPhone = "";
try{
custID = Integer.parseInt(this.custIDField.getText());
}
catch (NumberFormatException e){
errorMess.setText("Not a valid customer ID");
}
finally{
custName = this.nameField.getText();
custAddress = this.addressField.getText();
custEmail = this.emailField.getText();
custPhone = this.phoneField.getText();
comp.addCust(custID, custName, custAddress,
custEmail, custPhone);
custListArea.append(custID + ": " +custName);
custListArea.append("\n");
addressField.setText(null);
emailField.setText(null);
phoneField.setText(null);
nameField.setText(null);
custIDField.setText(null);
}
}
处理此问题并使按钮事件处理程序返回以等待正确输入的正确方法是什么?
答案 0 :(得分:3)
您可以简单地做到:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
int custID = 0;
String custName = "";
String custAddress = "";
String custEmail = "";
String custPhone = "";
try {
custID = Integer.parseInt(this.custIDField.getText());
custName = this.nameField.getText();
custAddress = this.addressField.getText();
custEmail = this.emailField.getText();
custPhone = this.phoneField.getText();
comp.addCust(custID, custName, custAddress, custEmail, custPhone);
custListArea.append(custID + ": " + custName);
custListArea.append("\n");
addressField.setText(null);
emailField.setText(null);
phoneField.setText(null);
nameField.setText(null);
custIDField.setText(null);
} catch (NumberFormatException e) {
errorMess.setText("Not a valid customer ID");
}
}
如果在调用NumberFormatException
时有一个parseInt
,它将抛出异常,并且在将文本设置为字段的地方也不会执行您的代码。如果没有例外,它将更新字段中的文本。
finally块将始终执行,因此也会在引发异常时执行。