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》
...全文
178 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
码小兔 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

所以效果不一样

111,093

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

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