Куда мне обращаться после исключения в графическом интерфейсе? - PullRequest
0 голосов
/ 03 ноября 2018

Общий вопрос новичка, но у меня возникли некоторые концептуальные трудности с пониманием того, как обработчик исключений можно использовать в графическом интерфейсе Java.

У меня есть следующий код в прослушивателе событий, ожидающий нажатия кнопки. По сути, если они вводят что-то, что не является целым числом, то это не может быть идентификатор клиента, и поэтому у меня есть обработчик исключений, проверяющий, может ли он быть проанализирован как целое число. Если это не может, тогда это помещает сообщение об ошибке в метку. Однако что мне делать оттуда? На данный момент он, очевидно, продолжается до блока 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);
    }
} 

Как правильно решить эту проблему и заставить обработчик событий кнопки вернуться к ожиданию правильного ввода?

1 Ответ

0 голосов
/ 03 ноября 2018

Вы можете просто сделать:

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");
    }
}

Если при вызове parseInt есть NumberFormatException, он сгенерирует исключение и не выполнит ваш код там, где он устанавливает текст в поля. Если нет исключений, он обновит текст в полях.

Блок finally всегда будет выполняться и, следовательно, также будет выполняться при возникновении исключения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...