Пытаясь поймать исключение - PullRequest
0 голосов
/ 22 октября 2019

В принципе, я бы хотел, чтобы код перехватывал исключение, если человек вводит число вместо буквы / имени. программа работает, однако она не перехватывает при вводе числа вместо буквы

import javax.swing.*;
import java.util.*;

public class ITFINAL 

{

  public static void main(String []args)

  {

   String role;
   String name;

   try

   {

    role = JOptionPane.showInputDialog("Please enter your name");
   }
   catch(Exception e)
   {
     JOptionPane.showMessageDialog(null, "Invalid Input" + e, "",JOptionPane.PLAIN_MESSAGE);
   }
   System.exit(0);

  }
}

1 Ответ

0 голосов
/ 22 октября 2019

Эта строка:

role = JOptionPane.showInputDialog("Please enter your name");

Будет никогда генерировать исключение как есть, потому что showInputDialog("...") возвращает строку . Поэтому, даже если пользователь вводит 42, полученное вами значение будет string "42".

Теперь, чтобы проверить, является ли строка целым числом, один из способов сделать этоиспользуя регулярное выражение:

if(role.matches("-?\\d+")) {
    throw new InputMismatchException(); //throw your exception
}

Однако, как и другие, упомянутые в комментариях, зачем вы вызываете исключение, а затем обрабатываете его в блоке catch? Вы можете напрямую отобразить сообщение об ошибке из приведенного выше оператора if, например, без исключения:

if(role.matches("-?\\d+")) {
    JOptionPane.showMessageDialog(null, "Invalid Input", "",JOptionPane.PLAIN_MESSAGE);
}
...