Эта строка:
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);
}