简单的 try-catch-finally 语句问题

woooooooow 2004-09-16 06:02:23
当try中的语句出问题时,比如sql查询出错,执行catch中的语句完后再执行finally中的语句。
想请教大家的是,finally中的语句是否大多是conn.Close(); / cmd.Dispose();这类语句?用来关闭try中的因意外错误中止未及时关闭的那些对象?
如果答案是肯定的话,另有一个疑问:如果某对象在try程序段中比较靠后才声明并使用,而程序在try中较前位置就出错中止了,finally中怎么进行判断该对象是否已声明并关闭之?如果不管3721关闭对象,在finally中又有可能出错了。
...全文
136 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
woooooooow 2004-09-16
  • 打赏
  • 举报
回复
谢楼上几位
刚看MS的例子也看到一些解决方法了
jkflyfox 2004-09-16
  • 打赏
  • 举报
回复
当try中的语句出问题时,比如sql查询出错,执行catch中的语句完后再执行finally中的语句。
想请教大家的是,finally中的语句是否大多是conn.Close(); / cmd.Dispose();这类语句?用来关闭try中的因意外错误中止未及时关闭的那些对象?
我认为是的,可以确保释放资源。
如果某对象在try程序段中比较靠后才声明并使用?为什么要这样?可以将声明提前阿,而且很多对象是不用显式释放的,最后,即使你一定要释放可能未声明的对象,你可以再次使用try,catch。
pingnt 2004-09-16
  • 打赏
  • 举报
回复
如果这样,你还不如在TRY中关闭对象.
tonybaobao 2004-09-16
  • 打赏
  • 举报
回复
你得将一切可能出错的代码段都放在try块里面呀!放外面当然是无法捕捉的了。至于finally,是无论异常与否,都会执行的收尾工作。
wangrenda 2004-09-16
  • 打赏
  • 举报
回复
finally
{
if(myconn.State==ConnectionState.Open)
{
myconn.Close();
myconn.Dispose();
}
}
czy412 2004-09-16
  • 打赏
  • 举报
回复
一般情况在finally中只要写conn.Close(); 就差不多了,除非你有还有事务!
cmd.Dispose();是不需要的,因为NET 的垃圾回收会帮你做这些事情的!

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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