如果在使用语句中发生exception,该对象是否仍然被处置?
如果在使用语句中发生exception,该对象是否仍然被处置?
我之所以问,是因为我试图决定是否试图抓住整个代码块或内部使用语句。 考虑到某些例外情况正在重新devise的捕捞区内进行devise。
using (SPSite spSite = new SPSite(url)) { //Get the Web using (SPWeb spWeb = spSite.OpenWeb()) { // Exception occurs here } }
是他们会。
using(SPWeb spWeb = spSite.OpenWeb()) { // Some Code }
相当于
{ SPWeb spWeb = spSite.OpenWeb(); try { // Some Code } finally { if (spWeb != null) { spWeb.Dispose(); } } }
编辑
回答完这个问题后,我在博客中写了一篇关于IDisposable和Using构造的更深入的文章。
是。 using
语句大致转换为以下结构:
IDisposable x; try { ... } finally { x.Dispose(); }
是的,它确实。 这就像包装你的代码(最后放置)。
using
语句会导致生成完整和正确的dispose
模式,所以答案是肯定的。