在Java中,为什么"最终"块存在:
Error: unsafe value used in a resource URL context
at DomSanitizationServiceImpl.sanitize...
而不是"首先"阻止?
[src]
答案 0 :(得分:1)
这与
相同try {
try {
...
} finally {
// instructions firstly executed when the outer "try" block is quit
}
} catch(...) {
...
}
这不是一种常见的模式,但如果是这样的话,它可能会以更惯用的方式得到支持。一般来说,finally
用于关闭您不再需要的任何资源,并且您不太可能希望在异常处理中阻止访问这些资源。
唯一的区别是第一个块在catch子句之前执行,而不是在finally块之后执行。因此,例如,它可以在catch块(可以执行System.exit ...)之前正确关闭资源。
我认为关闭资源更有意义放在块的末尾而不是中间。
答案 1 :(得分:0)
在Java中,为什么“finally”块存在:
存在finally
块,因此无论Exception
出现在try
或catch
中还是根本不出现finally
,它始终都会被执行。 finally
用于放置关闭文件流,清理代码等代码......
如果您不喜欢try
,则finally
有资源。您可能想要使用它。
在Java中,为什么“finally”块存在,而不是“firstly”块?
顾名思义,catch
必须包含清理代码,不能将其放在firstly
之前,并称之为某些花哨的finally
。即使在Exception
块中引发catch
,也会执行operator()
中的代码。