问题标签 [finally]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
6009 浏览

c# - 在 finally 块中抛出异常

有没有办法,如何获得当前抛出的异常(如果存在)?

我想减少代码量并为任务应用一些重用,如下所示:

并用以下代码替换它:

这种情况可能吗?

谢谢

0 投票
7 回答
7526 浏览

java - 多重返回:哪一个设置最终返回值?

鉴于此代码:

语言规范是否定义了调用的返回值test()?换句话说:在每个 JVM 中它总是相同的吗?

在 Sun JVM 中,返回值为2,但我想确定,这不是 VM 相关的。

0 投票
8 回答
598 浏览

java - 终于在异常处理中

finally异常处理中的块究竟执行了什么?

0 投票
2 回答
720 浏览

c# - finally 块中的异常

考虑以下代码,其中 LockDevice() 可能会失败并自行引发异常。如果在 finally 块中引发异常,在 C# 中会发生什么?

0 投票
3 回答
967 浏览

java - Java try finally 变体

这个问题困扰了我一段时间,但我还没有找到完整的答案(例如,这个问题是用于 C#在 try/finally 外部或内部初始化一次性资源)。考虑以下两个 Java 代码片段:

和第二个变体

让我担心的部分是线程可能在获取资源的那一刻(例如打开文件)之间有些中断,但结果值没有分配给相应的局部变量。除了以下情况之外,线程是否有任何其他情况可能会在上述情况下被中断:

  1. 抛出 InterruptedException(例如通过 Thread#interrupt())或 OutOfMemoryError 异常
  2. JVM 退出(例如通过 kill、System.exit())
  3. 硬件故障(或 JVM 中的错误以获取完整列表 :)

我读过第二种方法更“惯用”,但在上述情况下,IMO 没有区别,在所有其他情况下它们都是平等的。

所以问题:

两者有什么区别?如果我确实担心释放资源(尤其是在大量多线程应用程序中),我应该更喜欢哪个?为什么?

如果有人指出支持答案的部分 Java/JVM 规范,我将不胜感激。

0 投票
0 回答
447 浏览

java - 最后并返回

可能重复:
在Java中,最终返回王牌吗?

在下面的示例中,

输出是:

尽管在 catch 中有 return 语句,Finally 是如何被打印出来的?

0 投票
7 回答
2009 浏览

java - 在finally块中设置reference = null?

null我的一位同事在 finally 块中设置了引用。我认为这是无稽之谈。

你怎么看呢?

0 投票
7 回答
1529 浏览

java - Java中finally块的要点是什么?

我认为以下示例;但无法弄清楚 finally 块的重要性是什么。你能告诉我这两个代码示例的执行有什么不同吗?一个现实生活中的例子也会有所帮助。

样品 1:

样本 2:

0 投票
6 回答
1091 浏览

java - 理解“finally”块

我已经编写了七个测试用例来理解finally块的行为。工作原理背后的逻辑是什么finally

为什么builder = null不工作?

为什么builder.append("+1")起作用,而count++( in trySeven ())不起作用

0 投票
8 回答
9332 浏览

c# - 确定是否由于抛出异常而在 finally 块中执行

finally由于抛出异常,是否可以确定代码当前是否正在处理程序的上下文中执行?我更喜欢使用该IDisposable模式来实现进入/退出范围功能,但对这种模式的一个担忧是,如果using. 我会寻找这样的东西:

还有其他方法可以实现这一点(将委托传递给围绕具有特定行为的调用的函数),但我很好奇是否可以使用该IDisposable模式来做到这一点。


实际上,这显然在此之前已被问及。有可能以一种非常骇人听闻的方式进行检测。我实际上不会使用这种技术,但有趣的是知道它是可能的。