关于using语句

dongdongdongJL 2014-08-05 09:44:02
using( Sqlconncetion con = new Sqlconnection(strConn))
{

con.open();
con.close();
}

最终等价于

{
sqlConnection con = new Sqlconnection(strConn);
try{
con.open();
con.close();
}
finally
{
con.Dispose()
}
}


那我想为,catch哪去了?为什么没有catch哪?

难道要如下使用吗?

try{
using( Sqlconncetion con = new Sqlconnection(strConn))
{

con.open();
con.close();
}
}
catch(Exception ex)
{
e.Message;
}

...全文
199 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
moonwrite 2014-08-06
  • 打赏
  • 举报
回复
using (SqlConnection con = new SqlConnection()) { try { con.Open(); } catch (Exception ex)//这里和没有处理异常一样~所以干脆不要写 { ex.Message; } finally { con.Close();//using 本来就会调用con.Dispose()而Dispose会调用Close()所以也不用写 } } using本来就是语法糖,就是用来少写代码的,#3楼的这种做法反而增加代码 看你给#3最多分,但希望你写代码的时候不要按他的例子写
moonwrite 2014-08-06
  • 打赏
  • 举报
回复
引用 7 楼 sunny906 的回复:
[quote=引用 6 楼 moonwrite 的回复:] using (SqlConnection con = new SqlConnection()) { try { con.Open(); } catch (Exception ex)//这里和没有处理异常一样~所以干脆不要写 { ex.Message; } finally { con.Close();//using 本来就会调用con.Dispose()而Dispose会调用Close()所以也不用写 } } using本来就是语法糖,就是用来少写代码的,#3楼的这种做法反而增加代码 看你给#3最多分,但希望你写代码的时候不要按他的例子写
你对using的说法,我表示同意,但是请你仔细看看或者编译一下我那段代码,单单 ex.Message;这句能编译通过么?那只是一句伪代码而已,只是提示在这里记录异常,但你说“这里和没有处理异常一样~所以干脆不要写”反倒让人笑了吧![/quote] try{ using( Sqlconncetion con = new Sqlconnection(strConn)) { con.open(); } } catch(Exception ex) { e.Message; } 我是说你这写法还好过他的~ 而且既然你打算用处理异常了~ 那么就不要用using了
sunny906 2014-08-06
  • 打赏
  • 举报
回复
引用 6 楼 moonwrite 的回复:
using (SqlConnection con = new SqlConnection()) { try { con.Open(); } catch (Exception ex)//这里和没有处理异常一样~所以干脆不要写 { ex.Message; } finally { con.Close();//using 本来就会调用con.Dispose()而Dispose会调用Close()所以也不用写 } } using本来就是语法糖,就是用来少写代码的,#3楼的这种做法反而增加代码 看你给#3最多分,但希望你写代码的时候不要按他的例子写
你对using的说法,我表示同意,但是请你仔细看看或者编译一下我那段代码,单单 ex.Message;这句能编译通过么?那只是一句伪代码而已,只是提示在这里记录异常,但你说“这里和没有处理异常一样~所以干脆不要写”反倒让人笑了吧!
moonwrite 2014-08-05
  • 打赏
  • 举报
回复
如你所想~是的~ 异常本来就是一层一层往外抛的 遇到有捕获异常有处理就被处理了 如果没有~指到最外层还没有处理就中断程序 catch(Exception ex)//你这里是吃掉异常~比没有写catch还恐怖~! { e.Message; }
by_封爱 2014-08-05
  • 打赏
  • 举报
回复


using( Sqlconncetion con  = new  Sqlconnection(strConn))
 {
 
       con.open();
        con.close();
 }
 
//最终等价于
 
{
     sqlConnection con = new Sqlconnection(strConn);
   try{
           con.open();
           con.close();
 }
 finally
 {
    con.Dispose()
 }
 }
 
谁告诉你的???? 这根本不一样好么...
sunny906 2014-08-05
  • 打赏
  • 举报
回复
你可以这样用,让using释放con

            using (SqlConnection con = new SqlConnection())
            {
                try
                {
                    con.Open();
                }
                catch (Exception ex)
                {
                    ex.Message;
                }
                finally
                {
                    con.Close();
                }
            }
bdmh 2014-08-05
  • 打赏
  • 举报
回复
catch自己加
sunny906 2014-08-05
  • 打赏
  • 举报
回复
try后面可以跟catch或finally,跟catch是为了捕获异常,而跟finally是不管出现什么情况都会执行finally里的代码

62,074

社区成员

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

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

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

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