当前位置: 首页 > 知识库问答 >
问题:

当没有引发异常时,最后使用lock进行尝试

刘承运
2023-03-14

在java手册中,建议在使用lock()和unlock()时使用try-finally,但是当try块中从未引发异常时,这也是必要的?例如:

mutex.lock();
try 
{
    x++
} finally {
    mutex.unlock();
}

共有1个答案

凌清夷
2023-03-14

只是标准做法。将来,有人可以将这行代码更改为函数调用,这可能会引发异常。因此最好使用finally来允许异常正常传播。

 类似资料:
  • 根据Hibernate文档,在Hibernate抛出异常后使用会话是不安全的。 如果会话抛出异常,包括任何SQLException,立即回滚数据库事务,调用Session.close()并放弃会话实例。某些会话方法不会使会话处于一致状态。Hibernate抛出的任何异常都不能被视为可恢复的。确保通过在finally块中调用close()来关闭会话。 在我的代码中,我正在做批量插入。我正在使用会话。

  • 我在做一个基于线性探测的自定义哈希表,在C 11中,我在其中做了一个函数,函数应该返回哈希表中对应键的值,这是我的代码: 问题是,传递的每个键在哈希表中可能没有对应的值。在这个函数中,我无法获得如何处理这个异常。处理这个异常的可能方法是什么?C STL

  • 每当我试图将子对象持久化到JPA中现有的父对象时,就会出现以下错误: 原因:javax。验证。ConstraintViolationException:在组[javax.Validation.groups.Default]的持续时间内,类[store.entidades.Sucursal]的验证失败,约束冲突列表:[ConstraintViolationImpl]{interpolatedMess

  • 我在实现Runnable的类的run()中调用的方法被设计为引发异常。 但是Java编译器不允许我这样做,建议我用try/catch来围绕它。 问题是,通过使用try/catch将其包围,我使特定的run()变得无用。我确实想抛出该异常。 如果我为run()本身指定了throws,编译器会抱怨异常与Runnable中的throws子句不兼容。run()。 通常情况下,我完全可以不让run()抛出异

  • 下面是我生成PDF的代码: 下面是我用来绘制多个字符串的代码: 此代码正常工作,但如果我将更改为,它将引发以下异常: 起初,我认为这是因为有些数据不存在,无法编写,但如果我不更新Voly,它就可以正常工作。然后我认为这是一个问题,当创建了一个新页面但流存在时,没有创建PDPageContentStream。 提前感谢您的帮助!