问题标签 [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.
c# - C# 中 try/finally 的开销?
我们已经看到很多关于何时以及为什么使用try
/catch
和try
/ catch
/的问题finally
。而且我知道try
/肯定有一个用例finally
(特别是因为它是using
语句的实现方式)。
我们还看到了有关try/catch 和 exceptions 开销的问题。
然而,我链接到的问题并没有谈到只尝试最终的开销。
假设块中发生的任何事情都没有异常,try
确保finally
语句在离开try
块时执行(有时通过从函数返回)的开销是多少?
同样,我只问try
/ finally
,不catch
,不抛出异常。
谢谢!
编辑:好的,我将尝试更好地展示我的用例。
我应该使用哪个,DoWithTryFinally
或者DoWithoutTryFinally
?
这种情况过于简单,因为只有两个返回点,但想象一下,如果有四个……或十个……或一百个。
在某些时候,我想使用try
/finally
出于以下原因:
- 遵守 DRY 原则(尤其是当退出点的数量越来越多时)
- 如果事实证明我的内部函数没有抛出异常是错误的,那么我想确保
this.Working
设置为false
.
因此,假设考虑到性能问题、可维护性和 DRY 原则,对于多少个退出点(特别是如果我可以假设所有内部异常都被捕获),我想招致与try
/相关的任何性能损失finally
?
编辑#2:我将名称更改this.Working
为this.IsBusy
. 抱歉,忘了说这是多线程的(尽管实际上只有一个线程会调用该方法);其他线程将轮询以查看对象是否正在工作。如果工作按预期进行,返回值只是成功或失败。
java - Java Try Catch finally 没有 Catch 的块
我正在审查一些新代码。该程序只有一个 try 和一个 finally 块。由于排除了 catch 块,如果 try 块遇到异常或任何可抛出的东西,它是如何工作的?它只是直接进入finally块吗?
java - 在 finally 块中对象引用设置为 null
为什么输出是 CoolReturn,而不是 null?
问候,
Mahendra Atheria
java - 在 finally 块中恢复保存的值?
我现在已经在几个不同的地方看到了这种模式,但我不确定它的确切用途或为什么需要它。鉴于我在优质项目中见过它,我相信它很有用,但我想了解它而不是盲目地遵循它。我在 Servlet 过滤器和 Struts2 拦截器中特别看到了这种模式(在概念上与过滤器非常相似)。
这是来自 Google Guice (Servlet) 3.0 的示例:
恢复 finally 块中的值有什么需要或好处?
java - 关闭嵌套阅读器
从文本文件读取时,通常会创建 aFileReader
然后将其嵌套在BufferedReader
. 阅读完毕后,我应该关闭两个阅读器中的哪一个?有关系吗?
当谈到异常安全时,我有点偏执。当BufferedReader
构造函数抛出异常时会发生什么?它会关闭嵌套阅读器吗?还是保证不扔?
python - 在允许关闭数据库时关闭 cx_Oracle 连接
当数据库启动时,以下cx_Oracle
代码可以正常工作:
但是,如果在我运行此脚本时数据库恰好关闭,NameError
则会引发 a:
这对我来说很有意义: cx_Oracle
无法实例化连接,因此变量conn
从未设置,因此没有close()
方法。
在 Python 中,确保您的数据库连接关闭,同时仍然优雅地处理关闭数据库的情况的最佳方法是什么?
做以下事情对我来说似乎是一个巨大的kludge:
.net - 关于使用“using”和“finally”清理资源
是否存在需要以下结构的情况?
或者,是否应该在隐式调用中执行所有清理任务?something.Dispose()
这是有问题的代码:
注意:我已经定义了这个Parameter
类,所以这个函数的用户不必SqlParameter
直接处理 s 的创建。类的SqlParameter
属性Parameter
可用于检索SqlParameter
.
在某些时候,我的程序执行以下操作(无法发布代码,因为它涉及很多类;基本上,我有一个创建大量对象的迷你框架):
- 创建一个 s 数组
Parameter
。 GetDataTable('sp_one', parameters)
.GetDataTable('sp_two', parameters)
.
delphi - 提取嵌套的 try/finally 块
您如何将嵌套的 try/finally 块从例程“提取”到可重用实体中?说我有
并想要类似的东西
我希望它具有与嵌套原始文件相同的异常安全性。TDoSomething.Init
将 ResourceN 变量初始化为零并进行一些if Assigned(ResourceN) then
检查是否足够TDoSomething.Done
?
c# - 时间:2019-06-01 标签:c#yield and try-finally
如果我有如下协程,finally 块中的代码会被调用吗?
java - 在 finally 块完成后抛出 NullPointerException
我正在尝试制作一款 Android 游戏,并且我正在关注一些代码示例以使我的游戏循环正常工作。它涉及制作一个新线程。在该run()
方法中,我有一个 try/finally 块。在 finally 块执行后NullPointerException
会抛出一个。我不知道为什么,似乎没有什么是空的,即使是空的,也没有什么引用任何空的。我以为可能this
是空的,但似乎不是。这是我认为相关的代码:
线程的创建:
谢谢!