UL_UNRELEASED_LOCK_EXCEPTION_PATH可能为FindBugs误报吗? - java

我有这样的代码:

public class Thingy {
  private final Lock lock = new ReentrantLock();
  private boolean shutdown;
  public void shutdown() {
    lock.lock();
    shutdown = true;
    lock.unlock();
  }
}

FindBugs抱怨说“Thingy.shutdown()不会在所有异常路径上释放锁定”,我应该在try-final中包装shutdown = true;行,但是据我所知,这不可能变坏。

我错了吗?或者这是假阳性?

参考方案

公平地说,确定任何给定的代码段是否可以引发异常通常是比较棘手的(无需使用完整的编译器并进行分析)。

但我同意,在这种情况下,这是错误的肯定。即使不是这样-即使JLS / JVM规范中有一个暗角,表明某个分配可以通过某种方式通过异常发生-如果进入该状态,除了担心联合国之外,您还有更多的担忧释放锁!

Java-NoSuchMethodError没有被异常捕获 - java

我的印象是,Exception非常适合捕获所有可能的异常,因为每个异常都具有Exception作为基类。然后,在开发Android应用程序时,我使用了以下方法,该方法在某些自定义ROM中已被删除。boolean result = false; try{ result = Settings.canDrawOverlays(context); } catch(E…

Java:捕获异常-未选中与已选中 - java

我有一些代码将字符串(用户输入)拆分为一个数组,并将该数组的元素作为参数传递给方法。如果数组没有足够的元素,则会自动引发ArrayIndexOutOfBoundsException。但是,这是一个未经检查的异常,并且由于这是用户输入错误的问题,因此我可以事先检查此条件并抛出一个检查的异常。因此,我有几个问题:处理未检查的异常还是抛出检查的异常会更好吗?如果确…

Java API和已检查/未检查的异常混淆 - java

关于受检查和未经检查的异常的问题在这里和其他网站上已经提出了数百万次,但是我仍然对如此不同的答案感到困惑。在许多答案和文章中,我们可以阅读以下常规声明: 未经检查的运行时异常通常表示以下情况: 讲,在程序逻辑中反映错误,不能 从运行时合理地恢复。和检查异常 表示在以下人员的直接控制范围之外的无效条件 程序(无效的用户输入,数据库问题,网络中断, 缺少文件)这…

Java中是否有一种方法可以通过使用Instrumentation拦截对象的创建? - java

我需要拦截所有ClassNotFoundException或NoClassDefError的创建:问题是这些异常中的某些被某些库捕获并以其他异常类型重新抛出,所以我无法检索类名。有没有一种方法可以使用Intstrumentation在Java中执行此操作? 参考方案 您可以编写自己的ClassLoader实现,并以loadClass()或其他可用方法应用逻辑…

使用Java与内置异常抛出自定义异常 - java

我有些困惑,因为我希望能够在Java中引发自定义异常。为此,我必须在函数的标题中添加throws MyException。然后,任何依次调用该函数的函数都必须添加throws MyException或具有try-catch块。但是为什么呢?例如,当在Java中创建Stack并调用pop函数时,我不必具有try-catch,但是如果存在Java中的pop方法,…