Chinaunix首页 | 论坛 | 博客
  • 博客访问: 167924
  • 博文数量: 36
  • 博客积分: 2160
  • 博客等级: 大尉
  • 技术积分: 382
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-27 01:48
个人简介

喝喝咖啡,做做开发

文章分类
文章存档

2014年(4)

2013年(1)

2012年(4)

2011年(2)

2010年(3)

2009年(9)

2008年(3)

2007年(10)

我的朋友

分类:

2009-12-26 00:01:18

using try/catch

using语句块,在微软的文档中是这样说明的:可以使用 Using 块保证系统在代码退出该块时释放资源。如果正在使用消耗大量内存或其他组件也需要使用的系统资源时,这样处理十分有用。
并举了一个数据库连接的例子.
在IL代码中,可以看到,using块,被转换成了try/finally语句.finally后面会执行所using对象的Dispose方法.
所以,不管是正常执行try内的语句还是出了异常,所using的对象都会执行Dispose以释放资源.但是它并不包含catch块,也就是说不会捕获异常.
当使用using创建一个数据库连接时,连接的Open()方法如果打不开,这时候就会报异常,如果外部也没有捕获这个异常,程序就崩了.
如果不希望程序崩溃,就要加catch捕获可能出现的异常.
有两个地方可以加try/catch块,一是在using内部,二是在using外部.
错误捕获放在using里面还是外面,就要看使用方法的目的.如果using不能出现异常,即使有异常也可以返回异常的某种非异常表现,可以在内部加try/catch.
如果允许using块出异常,try/catch块还是放在外面好一些.
在像数据库连接这类例子中,using和try/catch还是分不了家啊.
阅读(884) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~