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) |