【问题标题】:Why does compiler gives this exception [closed]为什么编译器会给出这个异常[关闭]
【发布时间】:2014-08-05 10:51:43
【问题描述】:

我想检查一个文件是否存在。为此,我有usedPreconditions.checkArgument() 方法和File.exists() 方法。但是,编译器会给出IllegalArgumentException。为什么编译器会出现这个异常?

File fileIn = new File(filename); 
Preconditions.checkArgument( fileIn.exists() != false );

【问题讨论】:

  • 很可能是由错误的文件名引起的 - 但除非您发布更多代码,否则我们无法知道。
  • 只有他们没有更多的代码。我所拥有的所有方法都给出了。
  • 那么文件名从何而来?

标签: java guava


【解决方案1】:

首先,有几点需要注意。首先,编译器不会给出异常,它们会给出编译错误——您遇到的是运行时,而不是编译时。二、fileIn.exists() != false等价于fileIn.exists(),更易读。

您收到的实际问题是因为您的条件为假 - 这意味着在您的情况下该文件不存在。除非您发布更多代码,否则我们无法提供更多帮助,但这是不言自明的。请参阅有关checkArgument() 方法here 的文档

【讨论】:

    【解决方案2】:

    不是编译器,而是 checkArgument 方法本身。 在文档 (https://code.google.com/p/guava-libraries/source/browse/guava/src/com/google/common/base/Preconditions.java) 中,它说如果表达式为假,它应该抛出 IllegalArgumentException。

    所以你的文件不存在

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多