【问题标题】:Exception not getting thrown when no input is given没有输入时不会抛出异常
【发布时间】:2013-08-25 12:26:55
【问题描述】:
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] ...但我没有遇到异常。

谁能告诉我为什么?

【问题讨论】:

  • @NoIdeaForName。您应该只改进代码的格式,而不是代码本身。好像您在内部 if-else 块内添加了大括号。那是以前不存在的。
  • @RohitJain 好的,但我确实确保不会改变逻辑,只是更清晰的写法
  • @NoIdeaForName。是的,但你不应该编辑问题。我打算在我的回答中写一些关于这一点的观点。但是在您编辑之后,这一点现在就没有意义了。
  • @RohitJain 理解

标签: java exception


【解决方案1】:

您的第二个if 语句位于第一个if 语句内。因此,它只会在第一个 if 条件评估为 true 时执行。

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

尝试执行您的代码,例如:

java Ex_ex first

【讨论】:

  • 是的......我不小心......谢谢
【解决方案2】:

args[0] 不等于“first”,因此它没有进入内部if 语句。你明白那些是嵌套的if 语句,对吧?

【讨论】:

    【解决方案3】:

    因为它没有通过第一个if语句

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

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

    【讨论】:

      猜你喜欢
      • 2010-12-22
      • 2014-11-29
      • 1970-01-01
      • 1970-01-01
      • 2014-03-18
      • 2017-09-05
      • 2013-05-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多