【问题标题】:Can I set Eclipse to ignore "Unhandled exception type"我可以将 Eclipse 设置为忽略“未处理的异常类型”吗
【发布时间】:2014-04-01 07:34:17
【问题描述】:

是否可以让 Eclipse 忽略错误“未处理的异常类型”?

在我的具体情况下,原因是我已经检查了文件是否存在。因此,我认为没有理由加入 try catch 语句。

file = new File(filePath);
if(file.exists()) {         
    FileInputStream fileStream = openFileInput(filePath);           
    if (fileStream != null) {

还是我错过了什么?

【问题讨论】:

    标签: java eclipse compiler-errors unhandled-exception


    【解决方案1】:

    声明它throws Exception 或者试一下finally bolok

    【讨论】:

    • 聚会有点晚了,但我想说声谢谢。我来自 PHP/D 背景,未处理的异常会自动使程序崩溃,但我找不到在 Java 中复制该行为的方法。您建议的语法就是这样做的。
    • 晚点参加这个聚会......但这似乎是一个干净的答案,特别是如果您希望在调用堆栈的根部处理抛出的异常。因此,您编写和引用的任何引发异常的类都会冒泡并在一个地方处理以实现可维护性。用“抛出异常”标记依赖类中的方法,但使用这种方法在调用堆栈的根部处理它们将起作用并且不会违反语言。
    【解决方案2】:

    是否可以让 Eclipse 忽略错误“未处理的异常类型 FileNotFoundException”。

    没有。那将是无效的 Java,并且 Eclipse 不允许您更改语言的规则。 (有时您可以尝试运行无法编译的代码,但它不会执行您想要的操作。您会发现当执行到无效代码时会抛出UnresolvedCompilationError。)

    另外请注意,当您调用file.exists() 时文件存在并不意味着当您稍后尝试打开它时它仍然存在。在此期间它可能已被删除。

    可以做的是编写自己的方法来打开文件并在文件不存在时抛出未经检查的异常(因为您非常确信它确实存在):

    public static FileInputStream openUnchecked(File file) {
        try {
            return new FileInputStream(file);
        } catch (FileNotFoundException e) {
            // Just wrap the exception in an unchecked one.
            throw new RuntimeException(e);
        }
    }
    

    请注意,这里的“未检查”并不意味着“没有检查”——它只是意味着抛出的唯一异常将是未检查的异常。如果您发现其他名称更有用,那就去吧:)

    【讨论】:

    • 我理解忽略异常的含义。我来自编码背景,试图避免在它们发生之前尝试捕获和处理这些事情。我相信'try catch'会导致懒惰和低效的代码。文件在调用之间被删除的可能性极不可能是私人文件夹,这意味着只有应用程序可以访问该文件。但是我离题了,如果这就是 Java 想要的方式,那就这样吧......
    • @ChaosPixy 我听到了你的意见,但不太可能!= 不可能,尤其是在线程应用程序中,并且 try catch 只会导致懒惰低效程序员的懒惰低效代码! ;) 我的代码中的异常,或者至少我努力争取的,只有在我无法控制的事情发生时才会使用。 ObjectiveC 方法(在我看来,就像你看到的 Java 方法一样令人反感)与 Java 的争论可能会引起页面的愤怒! PS。否决票很愚蠢,所以我取消了它,然后取消了一些。
    【解决方案3】:

    您不能忽略它,因为它不是由于 Eclipse,而是编译器错误,如果您的调用没有包含在 try/catch 子句中,您的代码将无法编译。但是,您可以将 catch 块留空以忽略错误,尽管不建议这样做...

    【讨论】:

      【解决方案4】:

      这里是先生:

      try
      {
        file = new File(filePath);
        if(file.exists()) {         
              FileInputStream fileStream = openFileInput(filePath);           
              if (fileStream != null) {
                    // Do your stuff here
              }
        }
      }
      catch (FileNotFoundException e)
      {
        // Uncomment to display error
        //e.printStackTrace();
      }
      

      【讨论】:

        猜你喜欢
        • 2021-09-13
        • 2016-10-05
        • 1970-01-01
        • 2011-07-06
        • 2019-01-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多