问题标签 [using-statement]

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 投票
8 回答
926 浏览

c# - 为什么“使用”没有 catch 块?

我理解“使用”的目的是保证调用对象的 Dispose 方法。但是应该如何处理“使用”语句中的异常呢?如果出现异常,我需要将我的“使用”语句包装在 try catch 中。例如:


假设在 using 参数内创建对象时创建了一个异常

或使用范围内的异常

似乎如果我已经需要使用 try catch 来处理异常,那也许我也应该处理对象的处理。在这种情况下,“使用”语句似乎根本没有帮助我。如何使用“using”语句正确处理异常?我缺少更好的方法吗?

“使用”关键字语法是否可以更甜美一些......
如果有这个肯定会很好:

0 投票
2 回答
120 浏览

visual-studio-2008 - 一次性类如何检测是否有正在进行的异常?

我有一个实现 IDisposable 的类

然后我有一个以以下方式使用该类的方法:

当代码离开 using {...} 边界时,将调用 Foo 类的 Dispose 方法。如何在 Dispose 方法中检测代码是自愿使用块离开还是由于异常而离开?

0 投票
5 回答
2655 浏览

c# - 如何确定是否正在处理 .NET 异常?

我们正在研究 C# 中的一种编码模式,我们希望在其中使用带有特殊类的“using”子句,其Dispose()方法根据“using”主体是正常退出还是异常退出而做不同的事情。

据我所知,CLR 会跟踪当前正在处理的异常,直到它被“catch”处理程序使用。但是,尚不完全清楚这些信息是否以任何方式公开以供代码访问。你知道它是否存在,如果是,如何访问它?

例如:

这看起来几乎像System.Transactions.TransactionScope,只是成功/失败不是由对 的调用确定x.Complete(),而是基于using主体是否正常退出。

0 投票
2 回答
394 浏览

vb.net - Using 语句和延迟初始化属性出错

下面的代码将抛出 InvalidOperationException:ConnectionString 属性尚未初始化。在 Load 方法中调用 Connection.Open() 的行会引发异常。如果我使用 try-finally 语句而不是 using 语句,则一切正常。谁能解释为什么使用语句会发生异常?

0 投票
6 回答
15044 浏览

c# - 调用 Dispose() 与对象超出范围/方法完成时的对比

我有一个方法,里面有一个try/catch/finaly块。在 try 块中,我声明SqlDataReader如下:

在该finally块中,手动处理的对象是在类级别设置的对象。那么实现的方法中的对象IDisposable,例如SqlDataReader上面的,它们会被自动处理吗?Close()aReader执行 while 循环以获取阅读器的内容后调用(应该是Dispose()调用的内容Close())。如果没有调用Close(),当方法完成或对象超出范围时,该对象是否会自动关闭/处置?

编辑:我知道该using声明,但有些情况让我感到困惑。

0 投票
2 回答
3658 浏览

.net - 处理数据上下文导致阅读器关闭时尝试调用读取无效

我正在构建一个 MVC 2 应用程序并使用带有存储过程的 linq to sql。

我创建了一个数据访问层,它有一个内部数据上下文类和一个公开应用程序的公共类。在我的公共类中,我公开了访问 datacontext 类并使用 linq 将数据转换为我自己的对象模型类的方法。

在我的公共课程中,我将使用以下模式公开一个方法:

我的 MVC 应用程序将从模型类调用此方法,并且 aspx 将遍历结果。我发现我总是收到错误“数据上下文导致读取器关闭时调用读取无效”,因为我将数据上下文使用包装在使用范围内。如果我不在 using 子句中列出所有内容,它就可以正常工作。为什么是这样?

认为这不一定是 linq 或 mvc 的事情(但不确定),是 using 子句导致在所有对象返回之前调用 dispose 吗?或者也许 select 子句仅在枚举器被迭代时执行,类似于 yield 的工作方式?

0 投票
3 回答
30623 浏览

c# - C#:带有 HttpWebRequests/HttpWebResponses 的“使用”语句

Jon Skeet对我的SOApiDotNet代码(pre-alpha Stack Overflow API 的 .NET 库)发表了评论(通过 Twitter ):

@ maximz2005 我从快速浏览源代码中注意到的一件事:您没有处理(原文如此)WebResponses。“使用”语句 FTW。

他指出我需要将这些 Web 会话包装在“使用”语句中。但是,我对此有一个问题:我应该包装整个事情,从 HttpWebRequest 开始还是应该在“使用”语句之外创建 WebRequest,然后将 Response 包装在里面?我有一种感觉,不同之处在于,在前者中,两个对象都会被处理 - 这是正确的吗?

提前致谢。

0 投票
1 回答
1098 浏览

vb.net - 使用操作数和 XmlElement 时出错

我的代码是这样的:

0 投票
12 回答
89337 浏览

java - Java 有 using 语句吗?

Java 是否有在休眠中打开会话时可以使用的 using 语句?

在 C# 中,它类似于:

所以对象超出范围并自动关闭。

0 投票
5 回答
3360 浏览

c# - using(object obj = new Object()) 是什么意思?

这个语句在 C# 中是什么意思?