首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >即使在using块中抛出异常,资源是否已被释放?

即使在using块中抛出异常,资源是否已被释放?
EN

Stack Overflow用户
提问于 2011-11-23 12:04:22
回答 4查看 11.3K关注 0票数 26

可能重复:

Does Dispose method still get called when Exception is thrown inside of Using statment?

在访问数据库时,我有许多using块。我想知道--如果必须在using块中抛出异常,那么即使没有到达块的末尾,是否仍然会释放必要的资源?或者我需要自己在catch块中手动关闭它们吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-11-23 12:07:35

使用using语句定义的资源被释放,这是using有好处的主要原因。

使用语句确保在调用对象上的方法时发生异常时仍调用。通过将对象放入try块中,然后在finally块中调用Dispose,您可以获得相同的结果;实际上,编译器就是这样翻译using语句的。

http://msdn.microsoft.com/en-us/library/yh598w02%28v=VS.100%29.aspx

票数 42
EN

Stack Overflow用户

发布于 2011-11-23 12:07:51

是的,使用块的资源将被释放。

票数 4
EN

Stack Overflow用户

发布于 2011-11-23 12:07:53

实际上,如果在finally块中使用try{}catch{}finally{}构造和Dispose方法调用,那么try{}catch{}finally{}块是相同的。所以无论如何都要叫它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8241864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档