Iva*_*nov 3 c# using try-catch
我是C#的新手,直到我在Depth中找到了C#,直到我发现了C#,在Delphi中有一个try {}语句也在C#中实现.
但是,我看到你们中的一些人提到"使用(){}比尝试{}更好".
这是一个例子:
//This might throw an exception
sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
sock.Connect(ip, port);
//Try statement
try
{
sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
sock.Connect(ip, port);
catch
{
}
//using(){}
using(sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
{
sock.Connect(ip, port);
}
Run Code Online (Sandbox Code Playgroud)
我的问题:
如果在"using"语句中发生异常会发生什么?
什么时候应该使用"使用"而不是"尝试",何时"尝试"使用"使用"?
什么是"使用"声明的目的?
提前致谢!
Ste*_*eve 10
使用和尝试是两个非常不同的东西,并且是完全正交的.
如果发生异常并且不在try块中,则堆栈将展开,直到找到适当的异常处理程序.这与using语句无关.
使用using {}时要确保对象在使用后正确地收拾了-在你的榜样袜子将使用块后正确处置.
有关using在网络上使用seach(或SO)的更多信息,请参阅" IDisposable".
当您创建(和使用)实现IDisposable的新对象时,将使用using语句.即使在using块中引发异常,using语句也将始终处置该对象.
try/catch语句通常用于完全不同的目的,但try/catch/finally或try/finally类中的finally块与无条件执行时的目的相同.使用声明购买自动调用处理.
我推荐David Hayden的文章:C#Code Review - C#Using Statement - Try/Finally - IDisposable - Dispose() - SqlConnection - SqlCommand
关于Try/Catch/Finally 的使用声明
MSDN文章的MSDN文章