没有输入时不会抛出异常

时间:2013-08-25 12:26:55

标签: java exception

class Ex_ex
{
    public static void main(String[] args)
    {

         if (args[0].equals("first"))
             if (args[1].equals("second")) //Expected exception here LINE1
             {
                 System.out.println("first..second");
             }
             else 
             {
                System.out.println("nothing "+ args[1]);
             }

     }
}

我从命令行执行了这个程序 我给出了以下命令

“java Ex_ex test”

测试是args [0]并且没有给出args [1]。

我以为我会在第1行获得运行时异常,因为它会尝试访问不存在的args [1] ...但我没有得到异常。

有人可以告诉我为什么吗?

3 个答案:

答案 0 :(得分:5)

您的第二个if声明位于第一个if声明中。因此,只有在第一个if条件评估为true时才会执行。

由于您传递的args[0]test,因此外部if条件将失败,内部if将不会被执行,因此不会抛出异常。

尝试执行以下代码:

java Ex_ex first

答案 1 :(得分:4)

args[0]不等于“first”,所以它没有进入内部if语句。您确实理解那些是嵌套的if语句,对吗?

答案 2 :(得分:1)

因为它没有传递第一个if语句

if (args[0].equals("first"))

所以它没有到达第二个if语句,因此没有被抛出