finally有什么用?

xcode21 2009-09-18 03:05:20
第一段代码:


try
{
throw new Exception();
}
catch (Exception)
{
}
// Do finally


第二段代码:

try
{
throw new Exception();
}
catch (Exception)
{
}
finally
{
// Do finally
}



两段代码应该可以达到相同的效果,那么为什么要用finally》
...全文
140 18 打赏 收藏 举报
写回复
18 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
码小兔 2012-05-11
[Quote=引用 13 楼 的回复:]

我不是不知道try-catch-finally的用法
只是不知道,有finally和无finally有什么不一样的地方哪个
[/Quote]
只是在TRY 和CATCH块内有RETURN时,FINALLY块内的代表仍然执行,但是,如果不没有finally里,RETURN后的函数就不会执行了
  • 打赏
  • 举报
回复
Fantasyv1dao 2012-03-03
[Quote=引用 10 楼 wpjiyan 的回复:]

什么年代了啊 还问这问题勒
[/Quote]

人家的意思是把finally去掉,finally里的代码也会执行.

这女同志这么这么2呢?

还鄙视人家,敢来点更2的话吗?
  • 打赏
  • 举报
回复
xcode21 2009-09-18
我找到答案了
http://stackoverflow.com/questions/547791/why-use-finally-in-c

显然大家的答案都没有答到点子上,看来还是Google比CSDN好用

有兴趣可以继续讨论
  • 打赏
  • 举报
回复
xcode21 2009-09-18
如果真的有没有finally都一样的话?
MS和Anders何必设计这样一个关键字?
  • 打赏
  • 举报
回复
gudongxing 2009-09-18
没有什么大的区别,有finally就多执行了finally里的语句
  • 打赏
  • 举报
回复
xcode21 2009-09-18
我不是不知道try-catch-finally的用法
只是不知道,有finally和无finally有什么不一样的地方哪个
  • 打赏
  • 举报
回复
Terran5 2009-09-18
先执行try如果有错就执行catch ,但是加了finally就是,成功他也要走finally中的代码,出异常了抛出以后也一样要走finally
  • 打赏
  • 举报
回复
xcode21 2009-09-18
[Quote=引用 1 楼 fengjian_428 的回复:]
第一段如果try代码段出现异常 执行catch代码段,接着不会执行Do finally

而相同情况下第二段会执行Do finally

所以效果不一样
[/Quote]

就算出了异常,
catch执行完毕之后,
后面的代码一样执行啊
  • 打赏
  • 举报
回复
wpjiyan 2009-09-18
什么年代了啊 还问这问题勒
  • 打赏
  • 举报
回复
liujintaozyc 2009-09-18
就是异常处理的
执行try 如果有错就执行catch
不管有错没 都会执行finally
  • 打赏
  • 举报
回复
longhair9711 2009-09-18
Finally里面的代码一定会执行!!!!!
  • 打赏
  • 举报
回复
xcode21 2009-09-18
[Quote=引用 4 楼 xunis 的回复:]
VB.NET code'finally 是必走try
{thrownew Exception();
}catch (Exception)
{
}finally
{msgbox("123")
}'只要开始了 try 他都走finally
'不管怎么样 总是会弹出 123 的
[/Quote]










protected void Button1_Click(object sender, EventArgs e)
{
string id= Request["id"];
try
{
FileHelper.CopyFileForAudit(id);
}
catch (Exception ex)
{
RunJs("alert('上传文件不存在,文件未更新。但更新状态已改变');");
}
Data.Instance.UpdateImage(id);
RunJs("window.close()");
}



这是我的一段代码,FileHelper.CopyFileForAudit(id)抛了异常出来,catch执行了,catch后面的两条也执行了。
  • 打赏
  • 举报
回复
xuenzhen123 2009-09-18
finally用在try catch块的后面
不管try的部分是否有异常,即不管是否到执行到catch部分
程序都会执行finally里的代码
例如
try
{
conn.open();
//do something
}
catch(Exception ee)
{
//....
}
finally
{
conn.close();
}

上面这段代码不管try中执行的内容是否抛出异常 都会执行最后conn.close()
  • 打赏
  • 举报
回复
sakuram 2009-09-18
不管try执行成功与否,finally里面的语句都会被执行。
  • 打赏
  • 举报
回复
xunis 2009-09-18


'finally 是必走

try
{
throw new Exception();
}
catch (Exception)
{
}
finally
{
msgbox("123")
}


'只要开始了 try 他都走finally
'不管怎么样 总是会弹出 123 的
  • 打赏
  • 举报
回复
zm03173225 2009-09-18
不一样啊
  • 打赏
  • 举报
回复
gudongxing 2009-09-18
不管有没有异常,finally 里的语句都要执行
  • 打赏
  • 举报
回复
fengjian_428 2009-09-18
第一段如果try代码段出现异常 执行catch代码段,接着不会执行Do finally

而相同情况下第二段会执行Do finally

所以效果不一样
  • 打赏
  • 举报
回复
相关推荐
最新单片机仿真 独立式键盘调时的数码时钟实验 最新单片机仿真 独立式键盘调时的数码时钟实验最新单片机仿真 独立式键盘调时的数码时钟实验最新单片机仿真 独立式键盘调时的数码时钟实验最新单片机仿真 独立式键盘调时的数码时钟实验最新单片机仿真 独立式键盘调时的数码时钟实验最新单片机仿真 独立式键盘调时的数码时钟实验最新单片机仿真 独立式键盘调时的数码时钟实验最新单片机仿真 独立式键盘调时的数码时钟实验最新单片机仿真 独立式键盘调时的数码时钟实验最新单片机仿真 独立式键盘调时的数码时钟实验最新单片机仿真 独立式键盘调时的数码时钟实验最新单片机仿真 独立式键盘调时的数码时钟实验最新单片机仿真 独立式键盘调时的数码时钟实验最新单片机仿真 独立式键盘调时的数码时钟实验最新单片机仿真 独立式键盘调时的数码时钟实验最新单片机仿真 独立式键盘调时的数码时钟实验最新单片机仿真 独立式键盘调时的数码时钟实验最新单片机仿真 独立式键盘调时的数码时钟实验最新单片机仿真 独立式键盘调时的数码时钟实验最新单片机仿真 独立式键盘调时的数码时钟实验最新单片机仿真 独立式键盘调时的数码时钟实验最新单片机仿真 独立式键盘调时的数码时钟实验最新单片机仿真 独立式键盘调时的
发帖
C#
加入

10.7w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2009-09-18 03:05
社区公告

让您成为最强悍的C#开发者