Java Catch异常 - 空字符串

时间:2014-11-01 18:40:53

标签: java try-catch

我正在寻找关于如何捕获用户输入的无效String的异常。对于整数输入,我有以下代码:

            try {
            price = Integer.parseInt(priceField.getText());
            }
            catch (NumberFormatException exception) { 
            System.out.println("price error");
            priceField.setText("");
            break;

但是我不知道字符串的特定异常,输入是一个简单的JTextBox,所以我能想到的唯一不正确的输入是用户是否在框中输入任何内容,这就是我要抓住的内容。

4 个答案:

答案 0 :(得分:7)

if (textField.getText().isEmpty())

就是你所需要的一切。

或者

if (textField.getText().trim().isEmpty())

如果您还想测试空白输入,只包含空格/制表符。

您通常不会使用例外来测试值。测试字符串是否表示整数是规则的一个例外,因为String中没有可用的isInt()方法。

答案 1 :(得分:1)

您可以使用以下方法检查priceField是否包含字符串:

JTextField priceField;
int price;
try {
 // Check whether priceField.getText()'s length equals 0
 if(priceField.getText().getLength()==0) {
  throw new Exception();
 }
 // If not, check if it is a number and if so set price
 price = Integer.parseInt(priceField.getText());
} catch(Exception e) {
 // Either priceField's value's length equals 0 or
 // priceField's value is not a number

 // Output error, reset priceField and break the code
 System.err.println("Price error, is the field a number and not empty?");
 priceField.setText("");
 break;
}

当if语句为真时(如果priceField.getText()的长度为0),抛出异常,这将触发catch-block,给出错误,重置priceField和{{1代码。

如果if语句为false(如果break的长度大于或小于0),它将检查priceField.getText()是否为数字,如果是,则设置priceField.getText()达到那个价值。如果它不是数字,则抛出NumberFormatException,这将触发catch-block等。

让我知道它是否有效。

快乐编码:) -Charlie

答案 2 :(得分:1)

如果您希望在Java虚拟机的正常操作期间抛出异常,那么您可以使用此

if (priceField.getText().isEmpty()) 
    throw new RunTimeException("priceField is not entered.");

答案 3 :(得分:0)

你可以这样做

if (priceField.getText().isEmpty()) 
  throw new Exception("priceField is not entered.");