当字段为空时,Java抛出异常错误

当字段为空时,Java抛出异常错误,java,database,Java,Database,当textfield为空时,我出现了这个异常,它会抛出一个异常错误,即使我正在检查它是否为空。你能看看这个方法并告诉我有什么问题吗 private void addStaff() { ControlPanelCtr logCtr = new ControlPanelCtr(); String username = userField.getText(); String password = passField.getText(); int secLevel = I

当textfield为空时,我出现了这个异常,它会抛出一个异常错误,即使我正在检查它是否为空。你能看看这个方法并告诉我有什么问题吗

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。