Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 关于资源试用点(JLS)的澄清_Java_Resources_Try Catch - Fatal编程技术网

Java 关于资源试用点(JLS)的澄清

Java 关于资源试用点(JLS)的澄清,java,resources,try-catch,Java,Resources,Try Catch,涉及到try with resources语句,我已经看到了JLS8的定义 带有声明多个资源的ResourceSpecification子句的try with resources语句被视为多个try with resources语句,每个语句都有一个声明单个资源的ResourceSpecification子句翻译包含n个资源(n>1)的try-with-resources语句时,结果是包含n-1个资源的try-with-resources语句。在n个这样的翻译之后,有n个嵌套的try-catch

涉及到try with resources语句,我已经看到了JLS8的定义

带有声明多个资源的ResourceSpecification子句的try with resources语句被视为多个try with resources语句,每个语句都有一个声明单个资源的ResourceSpecification子句翻译包含n个资源(n>1)的try-with-resources语句时,结果是包含n-1个资源的try-with-resources语句。在n个这样的翻译之后,有n个嵌套的try-catch-finally语句,整个翻译就完成了

我不明白为什么n-1资源而不是n资源。另一方面,我发现了这个例子。在本例中,作者使用try with finally,而不是try with resources。我不明白他没有使用3次试水(他只使用2次)

此外,我还认为try with resources with n resources等同于n single try with resources,例如:

try(R1; R2; R3) = try(R1){try(R2){try(R3)}}}
因为我认为所有资源都将按顺序创建。而且,这一尝试和上面的资源也最终转化为n try catch


可以吗:)请帮我澄清:)

如果你把带有
n
的东西翻译成带有
n
的东西,会有什么变化?“
try(R1;R2;R3)=try(R1){try(R2){try(R3)}}
”是的,这就是多资源块的等价物。我相信“translation”指的是下面的一章,其中,try with resources转换为try-catch-finally块,finally块中有close()。如果翻译具有多个资源的try,则仅翻译其中一个资源,而剩余的n-1仍然构成具有多个资源的try。然后进一步转换,直到所有n个资源被转换为“经典”try-catch-finally块。因此,最后,在try-with-resources被“完全”转换后,我们将有n个try-catch-finally…此外,我认为这个解决方案只适用于我们不抛出异常(按抛出)的情况,因为当我们抛出异常时,我们不需要最后宣布试捕…对吗@HokOne更多问题:在上面的例子中,我没有看到作者使用try with resources,他只是使用try catch finally(n-1个try块),如果你将带有
n
的东西翻译成带有
n
的东西,会有什么变化?
try(R1;R2;R3)=try(R1){try(R2){try(R3)}
“是的,这就是多资源块的等价形式。我相信“translation”指的是以下章节,其中try with resources被转换为try catch finally块,finally块中有close()。如果翻译具有多个资源的try,则仅翻译其中一个资源,而剩余的n-1仍然构成具有多个资源的try。然后进一步转换,直到所有n个资源被转换为“经典”try-catch-finally块。因此,最后,在try-with-resources被“完全”转换后,我们将有n个try-catch-finally…此外,我认为这个解决方案只适用于我们不抛出异常(按抛出)的情况,因为当我们抛出异常时,我们不需要最后宣布试捕…对吗@HokOne更多问题:在上面的示例中,我没有看到作者使用try with resources,他只是使用try catch finally(n-1个try块)