java - 使用类处理错误输入

标签 java

这是我为 Electronics 设计的一个构造函数,用于检查 State 输入是否有效。

public Electronics(String name, double price, int quantity, double weight, boolean frag, String s)
    {
        super("Electronics",name,price,quantity,weight);
        fragile=frag;
        s=s.toUpperCase();
        if(checkState(s)==true)
        {
            state=s;
        }
        else
        {
            out.println("ERROR - not a valid state abbreviation");
        }
    }

但是在我的 main() 中,我有这样的东西:

public List<Item> shoppingCart = new ArrayList<Item>();
temp= new Electronics(name,price,quantity,weight, fragile, state);
...
shoppingCart.add(temp);

因此,即使状态缩写无效(它只是打印出状态无效),但该对象仍然会添加到 ArrayList 中。如果州缩写不正确,我该如何停止添加?

最佳答案

你应该throw an Exception并在您的 main() 中处理它,IllegakArgumentException可能是这里最合适的。

类似于:

    ...
    else
    {
        throw new IllegalArgumentException("...");
    }
    ...

在主要部分:

public List<Item> shoppingCart = new ArrayList<Item>();
try { 
   temp= new Electronics(name,price,quantity,weight, fragile, state);
   ...
   shoppingCart.add(temp);
} catch (IllegalArgumentException e) { 
  //handle exception
}

请注意,如果构造函数抛出异常,程序将无法到达将元素插入列表的位置。

关于java - 使用类处理错误输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13782988/

相关文章:

java - RXTX 无法在 ubuntu 上列出端口

java - 检查字符串是否等于引号

java - 从 RecyclerView 适配器启动 Chrome 自定义选项卡

java - 无法使按键监听器工作

java - 来自使用 Apache CXF 的 Web 服务的响应显示 "No binding operation info.."

java - 解决 CORBA NO_IMPLMENT - 无可用集群数据

java - RequestMappings 根本不起作用

java - 如何使 JTextField 的一部分不可编辑

java - 在 Java Card 2.2.1 平台中存储日期和时间

java - 什么是 PECS(生产者扩展消费者 super )?