using块是否具有异常捕获能力的呢?

jundywoo 2007-07-01 01:58:51
如果没有,using块里面还需要try和catch块,为什么还要用using,直接用finally块关闭连接对象就可以了吧?
...全文
566 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
风中追梦郎 2007-07-09
  • 打赏
  • 举报
回复
重在参与
jundywoo 2007-07-04
  • 打赏
  • 举报
回复
我说嘛,与其用using还要用try,倒不如直接用try catch finally呢
jundywoo 2007-07-04
  • 打赏
  • 举报
回复
顶!
oldmoon 2007-07-03
  • 打赏
  • 举报
回复
相当于:
try
{
SqlConnection conn=new...
}
catch
{
throw;
}
finally
{
conn.Dispose();
}
oldmoon 2007-07-03
  • 打赏
  • 举报
回复
using(SqlConnection conn=new...)
{
}

using是捕捉异常,销毁conn
通者归来 2007-07-03
  • 打赏
  • 举报
回复
using不会捕获异常,会自动消毁对象
F15Eagle 2007-07-03
  • 打赏
  • 举报
回复
关注……
guyehanxinlei 2007-07-03
  • 打赏
  • 举报
回复
学习一下
Pittypat 2007-07-03
  • 打赏
  • 举报
回复
你可以使用ilasm,看看using语句被展开成什么了?是不是try ... finally?
xu_2007 2007-07-03
  • 打赏
  • 举报
回复
顶顶顶
ldsmud 2007-07-03
  • 打赏
  • 举报
回复
using的作用就是自动Dispose,貌似这是最基础的,去msdn好好看看吧。
李必胜 2007-07-03
  • 打赏
  • 举报
回复
MyClass obj = new MyClass( );

using(obj)
{
obj.SomeMethod( );
}

等同于

MyClass obj = new MyClass( );

try
{
obj.SomeMethod( );
}
finally
{
if(obj != null)
{
IDisposable disposable = obj;
disposable.Dispose( );
}
}

macker0030 2007-07-03
  • 打赏
  • 举报
回复
using不能捕获异常。它只能用于实现了IDisopseable接口的对象。在代码块结束时自动调用Dispose方法。
using只能保证对象会被进行关闭、释放资源等。而用try...catch能处理各种异常情况。
xvting 2007-07-03
  • 打赏
  • 举报
回复
参考

http://msdn.microsoft.com/library/CHS/cpguide/html/cpconProgrammingEssentialsForGarbageCollection.asp?frame=true
jundywoo 2007-07-03
  • 打赏
  • 举报
回复
close方法和dispose方法是一样的!
Macosx 2007-07-03
  • 打赏
  • 举报
回复
混分的人真多
huwei001982 2007-07-03
  • 打赏
  • 举报
回复
using 使用方便
viena 2007-07-01
  • 打赏
  • 举报
回复
//为什么还要用using,直接用finally块关闭连接对象就可以了吧
连接最好不要用using,using相当于Dispose,会销毁连接对象的
连接对象的打开是很耗资源的,用完就销毁很可惜
不如调用.Close方法,使其释放回连接池~
viena 2007-07-01
  • 打赏
  • 举报
回复
using块不会自动捕获异常
intotheland 2007-07-01
  • 打赏
  • 举报
回复
3.using语句,定义一个范围,在范围结束时处理对象。
场景:
当在某个代码段中使用了类的实例,而希望无论因为什么原因,只要离开了这个代码段就自动调用这个类实例的Dispose。
要达到这样的目的,用try...catch..finally来捕捉异常也是可以的,但用using也很方便。
例如:


using (Class1 cls1 = new Class1(), cls2 = new Class1())
{
// the code using cls1, cls2


} // call the Dispose on cls1 and cls2



这里触发cls1和cls2的Dispose条件是到达using语句末尾或者中途引发了异常并且控制离开了语句块。

111,125

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧