异常处理不起作用?(JAVA)

时间:2014-05-26 05:44:32

标签: java exception exception-handling

class BadFoodException extends Exception{
    //Do something
}

class Reader {
    private String food1;
    private String food2;
    public static void main(String args[])
    {
        Reader m = new Reader(args);
        for (int i=0; i<args.length; i++){
            try
            {
            m.checkfood(args[i]);
            }
            catch(BadFoodException e){System.out.println(args[i]+ " caught");}

        }
    }
    private Reader(String [] args){
        food1=args[0];
        food2=args[1];
    }
    void checkfood(String food) throws BadFoodException
    {   if( food == "banana")
        throw new BadFoodException();
        System.out.println(food + " passed through.");
    }

}

我正在通过命令行传递两种食物 - 香蕉和芒果。 当食物是香蕉时,checkfood方法应该抛出异常..芒果应该通过。然而两者都是通过而不是?为什么呢?

3 个答案:

答案 0 :(得分:6)

if( food == "banana")更改为if("banana".equals(food))

在java ==运算符检查中,两个引用都引用相同的对象。如果您打算检查两个对象是否有意义,则应使用.equals()

答案 1 :(得分:0)

字符串在Java中是不可变的。您必须使用.equals(Object)方法来比较String对象。

注意:==检查两个引用的相等性,即它们是否指向同一个对象。但是,您应该检查String个实例是否有意义。

答案 2 :(得分:0)

if(food ==&#34; banana&#34;)替换它,

 if (food.intern() == "banana"){
 do your stuff here
 }

void checkfood(String food) throws BadFoodException
{   if( food.intern() == "banana")
    throw new BadFoodException();
    System.out.println(food + " passed through.");
}