问题标签 [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.
python - python try-finally
为什么没有foo
注意到whiz中的异常,但bar
引发了异常?
c++ - 在这种情况下是否可以避免复制 lambda 仿函数?
我在 C++11 中使用 lambda制作了一个finally模拟器,如下所示:
代码按预期工作,但在Finalizer结构 (1)的 ctor 处存在不需要的复制 ctor 调用(lambda 仿函数)。(谢天谢地,RVO 避免了finally函数 (3 -> 4) 中 return 语句的复制构造。)
编译器不会消除复制 ctor 调用(至少在 vc10 中 - gcc 可能会对其进行优化),并且如果将Finalizer struct (2) 中的仿函数类型更改为引用,它将崩溃,因为finally调用中的 lambda 参数 ( 4) 是 r 值。
当然,代码可以像下面这样“优化”
没有开销,只在作用域末尾放置了一个printf调用。但是……我不喜欢。:( 我试图用宏包装它,但它需要声明两个“名称”——一个用于 lambda 对象,另一个用于终结器对象。
我的目标很简单——
- 应该消除所有可以避免的不必要的性能开销。理想情况下,不应该有函数调用,每个过程都应该内联。
- 保持简洁的表达作为效用函数的目的。允许使用宏,但不鼓励使用。
对于这种情况,有什么解决方案可以避免它吗?
c# - foreach 循环终于
我有一个包含 try catch 和 finally 的 foreach 循环。它遍历文件夹中的文件,最后将它们全部删除....但是现在如果我有两个文件,因为它正在删除所有文件(由于应用程序功能,我需要删除所有文件)它不会通过第二个文件。是否可以让 foreach 循环完成然后删除 foreach 方法中的所有文件这是一个示例:
希望它足够清楚。
exception-handling - try catch/except finally 语句中 finally 的意义是什么
多年来,我一直在多种语言中使用 try-catch/except-finally 变体,今天有人问我 finally 的意义何在,我无法回答。
基本上你为什么要在 finally 中添加一个语句,而不是在整个 try-catch 块之后添加它?或者换句话说,以下代码块之间是否存在差异:
编辑:
人们,我知道 finally 会做什么,我已经使用它很长时间了,但是我的问题是在上面的示例//c
中,最后输入 finally 似乎是多余的,不是吗?
c# - C# 中的 finally 块是必须的吗?
2个条件有什么区别?每次运行method1或method2时,都应该有一个代码块需要运行。在我看来,两种方法是相同的。
finally 块对我来说似乎是不必要的。
sql - SQL SMO exception causes finally block to be skipped?
I created a VS2010 Windows service project. In it I invoke the method Microsoft.SqlServer.Management.Smo.Database.ExecuteWithResults(expression). In my scenario the expression contains invalid SQL, so the call fails with an exception as expected.
What's not expected is that the method is invoked within a try/finally block, but the finally block is NEVER executed:
However, if I change it to a try/catch/finally block, both the catch and finally code is invoked.
Am I missing something here? Shouldn't a finally block always get executed?
java - finally 阻止行为不同
我有这样的条件
现在我想总结一下str = "condition3";
。由于 finally 块总是运行,因此无法满足我的需求。还有什么可以做的。
c# - .NET 会停止调试运行 finally 块中的代码吗?
好吧,我已经阅读(并了解到)finally 块并不总是执行它的代码(即使除了拔掉插头)。
仅供参考有关更多信息,请参阅try catch finally 问题
但是,我还没有发现:
当我停止调试器时,我的 finally 块是否被执行?
谢谢!
java - 奇怪的最终行为?
为什么hii
从函数返回后打印出来go()
,finally块中的值变成了“hello”?
程序的输出是
java - Java catch/finally 块完全跳过?
我们有一个 ThreadPoolExecutor-back 任务执行模块。有些任务显然在应用程序代码中完成了,但是工作代码以某种方式跳过了所有的 try/catch/finally 并继续执行下一个任务,导致前一个任务错过了重要的状态报告代码。
就像在这个例子中一样,257832:5 被线程 8 拾取,但这个线程最终只是启动了另一个任务。
ThreadPoolExecutor 的 Runnable 看起来不错。看起来像
笔记:
- 我们捕获了最终的 Throwable 但两个任务之间没有记录异常
- 没有迹象表明 exit() 被调用或程序重新启动
- 第一个跳过所有日志行,无论是在调用应用程序代码之后的那个还是在 catch 和 finally 块中的那个,并跳过状态报告代码
- 这只会以低概率随机发生;但是由于执行的任务量很大,还是让我们很头疼。
就好像线程池执行器只是神奇地驱逐了正在运行的可运行对象(否则它需要一个 InterruptedException,它会被捕获为 Throwable;Java 线程不会以非合作方式停止,除非在关闭/退出期间)并跳过所有块。我检查了 ThreeadPoolExecutor javadoc,没有什么会导致这样的事件发生。
可能发生了什么?