你好,释放锁那步关键是保证能执行,虽然可能出现异常,但如果你之前已经确保能捕获可能出现的异常时,是否放在finally里都没什么问题,只是释放锁放在finally里你会感觉更放心一些。有时候这个类变量被放到其他类属性里以及放在复杂的环境里,不一定有合适的finally点,保证能处理掉所有异常及应对才关键。
举一个复杂点的情况,我们系统在做数据一致性时,有时遇到一些网络异常,尽管做try...catch了,但是网络异常带来的影响并没消除,因此会先记到本地,然后通过不断重试来保证在网络正常后执行,而之前出问题的点需要先行放过。这时有些finally里执行的语句就需要仔细考量一下,是否需要等到重试成功时再执行。