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] ...但我没有得到异常。
有人可以告诉我为什么吗?
答案 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语句,因此没有被抛出