当字段为空时,Java抛出异常错误
当textfield为空时,我出现了这个异常,它会抛出一个异常错误,即使我正在检查它是否为空。你能看看这个方法并告诉我有什么问题吗当字段为空时,Java抛出异常错误,java,database,Java,Database,当textfield为空时,我出现了这个异常,它会抛出一个异常错误,即使我正在检查它是否为空。你能看看这个方法并告诉我有什么问题吗 private void addStaff() { ControlPanelCtr logCtr = new ControlPanelCtr(); String username = userField.getText(); String password = passField.getText(); int secLevel = I
private void addStaff()
{
ControlPanelCtr logCtr = new ControlPanelCtr();
String username = userField.getText();
String password = passField.getText();
int secLevel = Integer.parseInt(secLvField.getText());
if(userField.getText().equals("") || passField.getText().equals("") || secLvField.getText().equals(""))
{
notificationField.setText("All fields must be fullfiled.");
}
else
{
try{
Login usrObj = new Login();
if(usrObj.getUsername().equals(username))
{
}
else
{
Login logObj = new Login();
admLogIdField.setText(String.valueOf(logObj.getId()));
logCtr.addPeople(username, password, secLevel);
}
}
catch(Exception e)
{
notificationField.setText("Username already exists in the database.");
Toolkit.getDefaultToolkit().beep();
}
}
}
谢谢。您确实检查了secLvField是否为非空,但是检查太晚了:您在尝试将字段解析为整数后检查该字段,当然,这会引发错误,因此检查永远不会到达
这条线
int secLevel = Integer.parseInt(secLvField.getText());
当secLevel为空或不表示有效整数时,将引发异常。您可以将解析包装在try/catch块中,以查看它是否成功:
int secLevel;
try {
secLevel = Integer.parseInt(secLvField.getText());
} catch (NumberFormatException nfe) {
secLevel = -1; // If -1 is valid, pick some invalid value
}
if (secLevel == -1 || userField.getText().equals("") || passField.getText().equals("")) {
notificationField.setText("All fields must be fullfiled.");
}
...
stacktrace会告诉您错误在哪里。阅读stacktrace。