Java 在MarkLogic中,如果EvaluResultIterator未使用或包含空序列,是否应关闭它?
我使用MarkLogic中的JavaAPI来评估XQuery。有时,这些XQuery不返回任何内容(空序列),或者不使用结果 根据文档(): 注意:EvalResulterator必须关闭。如果调用eval(),不要忘记对返回的evalResulterator调用close(),以释放底层资源 当然,当您使用资源进行一次空的尝试时,这看起来不是很好Java 在MarkLogic中,如果EvaluResultIterator未使用或包含空序列,是否应关闭它?,java,java-8,xquery,marklogic,marklogic-10,Java,Java 8,Xquery,Marklogic,Marklogic 10,我使用MarkLogic中的JavaAPI来评估XQuery。有时,这些XQuery不返回任何内容(空序列),或者不使用结果 根据文档(): 注意:EvalResulterator必须关闭。如果调用eval(),不要忘记对返回的evalResulterator调用close(),以释放底层资源 当然,当您使用资源进行一次空的尝试时,这看起来不是很好 try (EvalResultIterator eval = invoker.eval()) { // No result is retur
try (EvalResultIterator eval = invoker.eval()) {
// No result is returned
}
在这种情况下,确实需要关闭evalResulterator吗?最好的方法是什么?只需调用
invoker.eval().close()
。如果invoker.eval()
抛出异常,则不会返回任何evalResulterator
,因此无需担心最终会出现块。只需调用invoker.eval().close()
。如果invoker.eval()
抛出异常,则不会返回任何evalResulterator
关闭,因此无需担心最后出现的块。“返回空”和“结果未使用”是两种截然不同的情况。如果您确定只评估副作用,为什么不在评估过程中调用invoker.eval().close()
。因此,我希望确保资源已关闭。如果引发异常,则不会返回任何evalResulterator
来关闭。这可能是正确的答案。如果你发布它,我会接受它。“返回空”和“结果未使用”是两种完全不同的情况。如果您确定只评估副作用,为什么不在评估过程中调用invoker.eval().close()
。因此,我希望确保资源已关闭。如果引发异常,则不会返回任何evalResulterator
来关闭。这可能是正确的答案。如果你把它寄出去,我会接受的。