问题标签 [try-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 投票
5 回答
1150 浏览

java - finally 块中的堆栈溢出错误处理

我有一个java程序,可以无限次运行。

程序代码:

输出:这个程序通过不断地打印两个系统输出来无限运行。

我的问题:在某些时候,它开始从 try 块中抛出 StackOverflowErrors ,因此它到达 finally 块,我们再次递归地调用这个函数。但是由于我们已经面临 StackOverflowError,finally 块中的递归函数是如何执行的呢?

JVM 如何处理这种情况?如果我们也得到 OutOfMemoryErrors 会发生同样的行为吗?

0 投票
1 回答
435 浏览

java - 如何正确处理图形上下文 - 我需要尝试吗?(Java 1.7)

如何正确处理图形上下文 - 我需要使用tryandfinally吗?简单的例子:

编辑

这是 java.awt.Window 类的一个示例:

如我所见,使用的构造函数非常简单,但try仍然finally存在。所以我认为使用它们是一个好习惯。

0 投票
0 回答
1173 浏览

workflow - finally 块在 try 块被取消时运行

在我的 TFS2012 构建工作流程中,我有一个 Parallel 活动,并且在一些分支中我有 try-finally 活动。如果一个分支失败(例如,使用 CodeAnalysis 编译发现 CodeAnalysis 错误),则其他分支将被取消。但是,如果一个分支在一个包含块的 try 块内finally,则 finally 块运行,如果花费超过 30 秒,则取消失败,并显示:

BuildWarning: The workflow instance accepted a stop request but did not complete within 00:00:29.9922015. This may indicate an AsyncCodeActivity is active that does not support cancellation.

我想避免这样的消息,所以:

  1. 我可以以某种方式进行try-finally最终运行的活动,当在内部引发异常时try,而不是在整个事情被取消时?
  2. 如果没有,我想if在块内添加一个finally工作流已被取消的块,而不是做长时间的事情。我如何知道工作流已被取消?

编辑:这种模式甚至出现在 TFS2012 附带的 DefaultTemplate.11.1.xaml 中 - CopyDirectory 可能需要很长时间,但它位于TryCatch.Finally

0 投票
4 回答
138 浏览

java - 使用try-finally返回后的java惰性代码

我发现使用 finally 有代码“返回后”的可能性,这里有一些例子:

作为(在我看来更懒惰)的替代性:

所以,问题是,哪个更快,更具可读性,是的,在这种情况下,我真的关闭了一个 BufferedReader,所以是 try-finnaly 还是我使用错误的方式?

0 投票
1 回答
230 浏览

c++builder - TCriticalSection 并尝试 __finally 块

什么是最佳实践(cs 是 TCriticalSection)

我见过很多

但是为什么不在 try 块中进入临界区呢?它会引起任何问题吗?

0 投票
2 回答
2806 浏览

python - 尝试并最终在 python 中

我假设如果 finally 块中发生了某些事情,那么在 try 块中返回不是一个好主意。我只是想在敲别人的头之前确定执行顺序!

0 投票
5 回答
1600 浏览

java - JVM 如何执行 Try catch finally 块

根据 Java 语言规范,第 14.20.2 节

通过首先执行 try 块来执行带有 finally 块的 try 语句。然后有一个选择:

  • 如果try块的执行正常完成,则执行finally块,然后有一个选择:
    • 如果 finally 块正常完成,则 try 语句正常完成。
    • 如果 finally 块由于原因 S 突然完成,则 try 语句由于原因 S 突然完成

如果我正确解释它,那么在执行 try 块之后最终会被调用,但是这一切是如何工作的以及为什么我得到输出,

我想知道这个东西是如何产生输出 10 的。

就是当 try 块执行并遇到 return 语句时,输出值已经被压入堆栈,然后执行 finally 块

我知道首先遇到 return 然后 finally 块运行所以输出为 10,但是 jvm 如何解释或 try finally 块如何由 jvm 处理或转换?
是jvm使用GOTO部分跳转部分去finally部分还是堆栈已经维护?

0 投票
2 回答
577 浏览

c# - C# Web 服务 - 返回然后最后 - 先发生什么

在 C#.NET 中,我们来看下面的例子

现在假设方法 C 是一个长期运行的过程。

调用 TakeAction 的客户端是在调用方法 C 之前,还是在调用/完成之后取回返回值?

0 投票
5 回答
173 浏览

java - 为什么打印 1?

我有代码:

我不明白为什么要打印 1 。

0 投票
2 回答
942 浏览

java - 在Java中,构造函数中的最后一个块何时执行?

例如:

创建 Test 对象后,传递给讲师的 InputStream 是否立即关闭?还是在 Test 对象被销毁时关闭?我不知道如何在 C++ 中实现类似于析构函数的东西。