try catch和using问题

图片说明

如果出现错误的话,try catch捕获异常后,using还会释放到资源吗?

4个回答

两种方式:
1. 将SqlConnection conn声明放到try上面,保证错误时也能拿到实例,之后在finally的时候调用去dispose;
2. using里面再弄个try-catch,当然,会有些臃肿;但一般来说,ADO.NET访问数据库的这里,不需要用try-catch去包起来,而应该从业务层去包try-catch;

finally了解一下,程序都终止了,咋么释放

using也是try finally的组合 会先释放 再去到catch,是这样吗?

using只是语法糖,上面的代码相当于:
try
{
SqlConnection conn = new SqlConnection(...);
.....
.....
conn.Dispose();//编译器自己帮你调用Dispose()方法
}
catch(Exception ex)
{
}

using只是帮你在花括号内的代码执行完毕后调用了一下对象的Dispose()方法罢了,所以如果在花括号里面就发生了异常,那么是执行不到Dispose()方法的,更直接的方法看是否会释放就去IL反汇编一下,看下释放资源的代码会不会执行

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问

相似问题

2
C#使用sql查询语句求解
3
求助,C# winform实现socket接收客户端数据,总是丢数据。
2
c#winform中datagridview删除数据库中的整行数据
1
程序没有报错,但是一直显示正在运行,生成的二维码图片也无法保存到本地目录?
2
当网页采用js动态获取数据时,HttpClient应如何获取数据?
1
C#网络通信程序设计基于ICMP的活动主机探测程序设计如何在界面上显示PING的统计结果(成功,失败次数)
2
c3p0连接数据库提示Access denied for user 'root'@'localhost' (using password: YES)
2
C#窗体实现在线答题系统时代码无bug能运行,但不显示题目信息,求问怎么回事?
0
c#写一个上位机程序,用串口助手调试不出结果
1
关于C++异常抛出常量字符串无法被char*捕获
3
数据库的连接,照书上的代码写的,没法显示前两行,一直显示‘关键字Table’附近有语法错误
2
其他信息: Incorrect syntax near 'FORM'.请问这个是什么原因造成的
1
C#怎么读取oracle的long类型数据?
1
类似于Size、控件属性Margin的类型Padding的时分控件HourMinute的初始化问题
2
新手提问:异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。
0
C#客户端使用LogonUser访问服务器上的共享文件,提示用户名或密码错误(客户端与服务器在同一域中)
1
C#窗口程序调用快递鸟API查询快递完整源码
2
C# 为什么ReportViewer做的报表个别电脑出现不显示的情况?
0
基于c#的skyline二次开发时,用帮助文档的例子,创建圆的时候 try catch捕捉到的一下问题:
1
Unity弹出window的messageBox显示提示信息之前弹出Oops提示框